最近,我发现我身边有许多刚开始学习C#开发的小伙伴,总是碰到一些大大小小的问题,尤其是应用程序与数据库连接的时候,既然如此,我也把我这些年碰到的常见的应用程序连接数据库时遇到的问题总结整理分享给大家。
1.实例名错误
所谓实例名,是指数据库管理工具登录时候的服务器名称,如下图所示。
数据库登录对话框
要想数据库能顺利连接成功,需要注意以下几点:
第一:实例名称正确
【1】实例名称分为默认实例名和命名实例名。
默认实例名通常如上图所示是你自己的计算机名称或点(.),也有使用localhost(用得比较少,前两者用得多)。
命名实例名称通常是计算机名称/实例名,如DESKTOP-68751EA\命名实例名(提示:此处这个名称,就是在安装数据库的时候使用的实例名称),如果不知道是什么名称,可以通过如下方式查看。
数据库服务查看
在上图中,红色框中的就是默认的命名实例。
第二:身份验证模式错误
数据库登录的身份验证模式分为Windows 身份验证和SQL Server身份验证。
如果数据库安装成功后,我们首次登录都会使用Windows身份验证模式进行登录,因为它不需要输入用户名和密码,就能进入你的数据库管理工具。我们首次登录为什么要使用Windows身份验证模式呢?主要是为了设置登录配置,也就是设置SQL Server身份验证模式登录,如果不设置,后面使用SQL Server身份验证模式登录,登录会失败的。
开启SQL Server和Windows身份验证模式
第三:给登录的角色授权
以上设置完毕后,还需要对登录用户进行授权,比如我们使用最高管理权限的sa用户进行登录,那么就需要给其授权,如下图所示。
给sa用户授权并启用
第四:重启服务
最最最关键的一步,一定不能忘记,如果忘记了,上面的操作无效,我们设置完毕后,还需要进行服务器的重启,重启的方式如下所示:
重启服务
确定重启服务
服务重启中
重启完成后,断开数据库管理工具的连接,再次进行登录,此时你就可以选择SQL Server身份验证模式登录,输入正确地登录用户名和密码。
如果以上登录没问题,你可以打开你已经写好的程序或者待开发的程序,进行数据库连接字符串的配置。
2.应用程序配置文件中登录数据库时出现的常见错误
第一:数据库服务器登录名错误
所报错误:在于SQL Server建立连接时出现于网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且SQL Server已配置为允许远程连接。
数据库登录名错误提示
以上错误的解决办法:
【1】去到数据库管理工具,先自己进行打开登录,确保你使用的是有效的数据库服务器名称。如下图所示:
数据库服务器名称
【2】将以上错误数据库连接字符串,修改为如下所示。
<connectionStrings>
<add name ="connString" connectionString ="Server=DESKTOP-68751EA;DataBase=SMDB;Uid=sa;Pwd=sa1234"/>
</connectionStrings>
第二:数据库登录用户名称错误
如下图所示:用户“xxx”登录失败。
数据库登录用户名错误提示
解决的办法:去数据库确保是否有这个登录的用户,如果有,那么你需要确保你是否写错了用户名。
找到后修改为正确的即可。
<connectionStrings>
<add name ="connString" connectionString ="Server=DESKTOP-68751EA;DataBase=SMDB;Uid=sa;Pwd=sa1234"/>
</connectionStrings>
第三:数据库登录密码错误
如下图所示:用户“sa”登录失败。
用户sa登录失败
大家会发现第二和第三会报同样的错误,所以你们在看到这个错误的时候,一定要先进行排查。
【1】排查用户名是否存在或者是否写错。
【2】排查数据库登录密码是否正确。
正确的示例代码:
<connectionStrings>
<add name ="connString" connectionString ="Server=DESKTOP-68751EA;DataBase=SMDB;Uid=sa;Pwd=sa1234"/>
</connectionStrings>
第四:数据库登录名的错误问题
【1】数据库登录名不存在的错误
常规错误如下图所示:
数据名错误或者没有数据库错误提示
解决办法:此种情况,你先去数据库打开,查看一下此数据库是否存在。
如下图所示:确认没有“SMDB”的数据库
没有此数据库
添加好数据库,如下图所示:
添加后
【2】如果数据库名写错,也会报错,错误类型和【1】中一样,此处不再做详细说明,如下图错误所示
错误的数据库名
解决办法:只需要修改为正确的数据库名称即可。
第五:应用程序登录的用户名或密码不存在或错误。
如下图所示:
应用程序用户名活密码错误提示
解决办法:查看是否存在此登录账号:出现这种情况,你首先要去排查你的数据库中是否有此登录账号并确认登录密码是否正确。
第六:“DAL.SQLHelper”的类型初始值设定项引发异常。
说明:以上SQLHelper,是新阁教育项目研发组封装的通用数据库访问类。
此错误报错如下图所示:
类型初始值设定引发的异常
解决办法:如上图所示,如果报此错误,需要去到SQLHelper这个类中进行排查,而这种错误最常见的问题就是数据库连接字符串的读取时候出现的问题,最常见的就是读取连接字符串的属性写错。
private static readonly string connString =
ConfigurationManager.ConnectionStrings["connString"].ToString();
如代码所示:
【1】使用的时候变量名写错:如果在使用的时候,connString变量名写错,就会报此错误。
【2】配置文件读取写错:如果ConfigurationManager和ConnectionStrings写错,会直接亮红线。
【3】ConnectionStrings["connString"]:这个中的connString写错,会读取不到数据,读取不到。读取不到,会提示如下错误:
未将对象应用设置到对象的实例
解决办法:去配置文件中查找正确的连接字符串名称,与name属性保持一致。
<connectionStrings>
<add name ="connString" connectionString ="Server=DESKTOP-68751EA;DataBase=SMDB;Uid=sa;Pwd=sa1234"/>
</connectionStrings>
3.应用程序中数据库操作常见的错误(和配置文件排查类似)
第一:数据库服务器无法连接成功
错误如下所示:
数据库服务器无法连接成功
解决办法:
【1】检查SQLServer服务是否打开。
【2】检查连接字符串Server对应服务器名称是否正确(注意默认实例、命名实例的名称)。
【3】如果是连接局域网内其他计算机,请检查防火墙是否有拦截,或者通过“计算机管理”检查服务器是否允许外边连接。
【4】还有就是要求服务器所在的计算器,必须打开TCP/IP协议。通过配置管理器。
第二:连接字符串中将分号写错
错误如下所示:
连接字符串中将分号写错
出现错误的原因:连接字符串中分号写错导致,如果将“全角”写为“半角”也会出错。
解决办法:关键字之间修改成英文半角的分号。
第三:数据库登录失败
数据库登录失败
解决办法:将数据库名称,修改为正确的数据库名称即可。
第四:服务器“登录账户”或者“登录密码”写错
服务器“登录账户”或者“登录密码”写错
解决办法:
【1】修改登录账号名称,或者修改登录密码。
【2】检查sa账号是否开启并授权。
第五:连接字符串的关键字写错
连接字符串的关键字写错
解决办法:修改连接字符串对应的关键字。
第六:连接对象属性没有赋值
连接对象属性没有赋值
解决办法:只需要将字符串赋值给连接对象即可。
第七:Command对象的属性没有初始化
Command对象的属性没有初始化
解决办法:只需要给SqlCommand两个属性赋值即可。
4.C#程序中SQL常见错误
第一:Sql语法错误
Sql语法错误:字段之间多全角空格
SQL语法错误:字符串拼接的时候少空格
解决办法:在提示错误的关键字附近仔细检查Sql语句。
提示:Sql语句的编写,必须全部使用英文半角,包括逗号、空格、字母,小括号等。
第二:列名称写错或者占位符格式有错误
占位符格式错误
列名错误
第三:格式转换错误
格式转换错误
第四:占位符填充不完整错误
占位符填充不完整错误
第五:占位符中将大写括号写成中括号
占位符中将大写括号写成中括号
,