数据库连接字符串怎么写才对,语法规则和常见坑点聊聊
- 问答
- 2026-01-13 07:19:23
- 3
你得知道连接字符串是什么,简单说,它就是一长串文本,里面包含了你的程序要连接到数据库所需要的所有信息,就像你要去一个朋友家做客,你需要知道地址(服务器地址)、门牌号(数据库名),还要有钥匙(用户名和密码),连接字符串就是把所有这些信息按照固定的格式写在一起。
连接字符串的基本语法规则
连接字符串看起来是一整段,但其实它是由多个“键值对”组合而成的,每个键值对告诉数据库驱动程序一个特定的信息,它的基本格式是:关键词=值,不同的键值对之间用分号 隔开。
举个例子,一个比较典型的连接字符串可能是这样的:
Server=我的服务器地址;Database=我的数据库名;User Id=我的用户名;Password=我的密码;
这里就包含了四个关键的键值对:
Server=我的服务器地址:告诉程序数据库服务器在哪台电脑上,可以是IP地址,也可以是电脑名。Database=我的数据库名:告诉程序要连接的是服务器上的哪个具体的数据库,一个数据库服务器上可以创建很多个数据库。User Id=我的用户名和Password=我的密码:这是你的身份凭证,就像账号密码一样,用来登录数据库。
常见数据库的连接字符串写法(关键词)略有不同
这是一个非常容易出错的点!不同的数据库(比如MySQL、SQL Server、PostgreSQL)它们约定俗成的“关键词”可能不一样,你不能把连接MySQL的字符串直接拿去连SQL Server。
-
对于微软的 SQL Server:
- 服务器地址通常用
Server或Data Source。 - 数据库名通常用
Database或Initial Catalog。 - 身份验证有两种方式:一种是直接用用户名密码(叫做SQL Server身份验证),就是上面的
User Id和Password;另一种是使用当前Windows登录用户的身份去连接(叫做Windows身份验证),这时字符串会写成Integrated Security=True或Trusted_Connection=True,如果你用了Windows身份验证,就不能再写User Id和Password了。 - 示例(Windows身份验证):
Server=localhost; Database=TestDB; Integrated Security=True; - 示例(SQL Server身份验证):
Data Source=192.168.1.100; Initial Catalog=TestDB; User Id=sa; Password=123456;
- 服务器地址通常用
-
对于 MySQL:

- 服务器地址通常用
Server。 - 数据库名用
Database。 - 用户名用
Uid(注意,这里是Uid,不是User Id)。 - 密码用
Pwd(注意,这里是Pwd,不是Password)。 - 示例:
Server=localhost; Database=test; Uid=root; Pwd=123456;
- 服务器地址通常用
-
对于 PostgreSQL:
- 它通常使用一个叫
ConnectionString的参数,里面的关键词又有所不同。 - 服务器地址用
Host。 - 数据库名用
Database。 - 用户名用
Username。 - 密码用
Password。 - 示例:
Host=localhost; Database=test; Username=postgres; Password=123456;
- 它通常使用一个叫
你看,光是用户名密码的关键词就有好几种写法,这是第一个大坑。
常见的坑点和注意事项
-
空格和分号:键值对之间必须用分号隔开,分号后面可以加空格也可以不加,但关键词和等号之间最好不要有空格。
Server=A;Database=B是对的,Server = A ; Database = B虽然有些驱动程序能容忍,但不是一个好习惯,可能在某些严格的环境下出错。 -
包含特殊字符的密码或值:如果你的密码里包含了分号 、单引号、双引号这些在连接字符串里有特殊意义的字符,那就麻烦了,比如你的密码是
abc;123,如果你直接写成Password=abc;123,驱动程序会认为Password=abc就结束了,后面的123成了一个无效的关键词,导致连接失败,正确的处理方法是把这个值用双引号括起来,Password="abc;123",同样,如果服务器名或数据库名有特殊字符,也要这样处理。
-
端口号:很多时候数据库服务器并不是运行在默认的端口上,比如MySQL默认是3306,SQL Server默认是1433,但如果管理员改了端口,你就必须在连接字符串里指定,通常用的关键词是
Port(MySQL/PostgreSQL)或是在Server地址后面加逗号指定(SQL Server)。- MySQL示例:
Server=localhost;Port=3307;Database=test;Uid=root;Pwd=123456; - SQL Server示例:
Server=192.168.1.100,1433;Database=test;User Id=sa;Password=123456;
- MySQL示例:
-
连接超时:网络不好的时候,程序可能尝试连接很久都没反应,卡在那里,为了避免这种情况,可以设置一个连接超时时间(单位是秒),关键词通常是
Connect Timeout或Connection Timeout。Connect Timeout=30表示如果30秒内还连不上,就报错放弃。 -
把连接字符串硬编码在代码里:这是最最不推荐的做法!尤其是包含密码的信息,一旦你的代码泄露(比如上传到公开的GitHub),你的数据库就完全暴露了,正确的做法是把它放在配置文件里(NET的
appsettings.json,Java的application.properties或application.yml),然后从配置文件读取,这样即使要修改数据库密码,也只需要改配置文件,而不需要重新编译代码。 -
信任服务器证书(现代常见坑点):现在为了安全,很多数据库要求使用SSL加密连接,但在开发环境或内网环境,可能用的是自签名的证书(不是由权威机构颁发的),程序默认不信任这种证书,会导致连接失败,这时候你可能会看到一个和SSL相关的错误,为了解决这个问题,你可能需要在连接字符串里加上
TrustServerCertificate=True(SQL Server)或SslMode=Preferred(MySQL)之类的参数。但要注意,在生产环境中这可能会带来安全风险,请谨慎使用。
写对连接字符串的关键在于:
- 查文档:先确定你连的是什么数据库,去查它的官方文档或可靠来源,看正确的关键词是什么。
- 注意细节:小心分号、空格和特殊字符。
- 考虑周全:别忘了端口、超时等可选但重要的参数。
- 保证安全:千万不要把带密码的连接字符串写死在代码里。
希望这些具体的解释和例子能帮你避开那些常见的坑。
本文由革姣丽于2026-01-13发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/79792.html
