再也不用担心连不上数据库了

前言

大家好,初学者遇到数据库连接不上,是很常见的情况,可能会以各种形式呈现出来,今天跟大家分享一下,如何解决C#连接不上数据库的问题。

本文主要针对的是SQLServer数据库,采用sa账户登录,配置文件采用appconfig,本地数据库的情况,如果情形不一样,可能无法涵盖。

常见错误

以下这几种情况,都可能是连接字符串导致的问题,可能还会有其他情况,后续再完善补充。

(1)代码报错,提示sa登录失败。

再也不用担心连不上数据库了

 

 (2)提示连接出错,未找到或无法访问服务器。

再也不用担心连不上数据库了

 

 (3)代码报错,提示类型初始值设定项引发异常。

再也不用担心连不上数据库了

 

 (4)直接弹窗,提示类型初始值设定项引发异常。

再也不用担心连不上数据库了

 

 (5)代码报错,不支持关键字。

再也不用担心连不上数据库了

 

 (6)代码报错,提示未将对象引用到对象的实例

再也不用担心连不上数据库了

 

 (7)代码报错,提示初始值设定引发异常项

再也不用担心连不上数据库了

 

 

解决方案

第一步:首先一定要保证SMMS可以连接上数据库,这是一个大的前提,如果SSMS都不能连接数据库,就先解决这个问题之后,再往后面看。

再也不用担心连不上数据库了

 

 

第二步:如果SSMS可以连接数据库,那么我们观察一下这个登录界面分析一下,SQLServer连接字符串主要由四个部分组成,分别是服务器名称Server、数据库名称DataBase、用户ID即Uid、密码即Pwd,除了数据库名称之外,其他三个参数都应该与这上面的保持一致,否则就会出错。

第三步:简而言之,就是把SSMS这个登录界面的参数数据复制到连接字符串里,进行替换即可。

再也不用担心连不上数据库了

 

 

第四步:复制完成之后,如果采用的是字符串方式,对于命名实例是可能会出现语法错误的,这个是因为转义的问题,解决方案有两种,第一种方式是在连接字符串前面加个@进行转义,第二种方式是将连接字符串中的单斜杠改成双斜杠。

private string ConnStr=@"Server=DESKTOP-ICFINTH\Wincc;DataBase=ProductDB;Uid=sa;Pwd=123";

private string ConnStr = "Server=DESKTOP-ICFINTH\\Wincc;DataBase=ProductDB;Uid=sa;Pwd=123";

排查步骤

如果问题仍然没有解决,按照下面的步骤进行检查:

(1) 检查数据库名称是否正确

再也不用担心连不上数据库了

 

 再也不用担心连不上数据库了

 

 (2) 检查connectString的名称有没有错误

再也不用担心连不上数据库了

 

 (3) 检查下面这行代码有没有错误

再也不用担心连不上数据库了

 

 

(4) 对照检查SQLHelper里的代码有没有错误

概念问题

以下几个概念问题,需要大家注意:

(1)怎么判断是命名实例还是默认实例?

如图,服务器名称为DESKTOP-5DI6FNQ,这种就是默认实例。

再也不用担心连不上数据库了

 

 当名称中带有 ’ \ ’ 时,例如DESKTOP-5DI6FNQ\WINCC,这种就是命名实例,其中WINCC就是实例名称,默认实例和命名实例可以共存,也可以有多个实例名称。

再也不用担心连不上数据库了

 

 

(2)使用appconfig和不用appconfig有什么区别?

使用appconfig方式是通过xml配置文件来获取连接字符串。配置文件可以通过记事本等其他软件打开并修改。这样就可以使用不更改代码的方式改变数据库的连接字符串。不使用appconfig,只能在代码中定义固定的连接字符串。

有一点要注意,对于命名实例,如果直接用字符串的方式,是需要双斜杠或@转义,如果是appconfig的方式,则是单斜杠,不能写成双斜杠。

写在最后

本文只是从常见的错误角度来说明了解决方案和排查步骤,实际情况错综复杂,只有掌握好方法和思路,才能尽快解决问题。

 

 

-END-

上一篇:HTML5移动Web开发(三)——在移动网站中使用HTML5


下一篇:Django3.2 新特性