ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-12-16 17:35:40  阅读:180  来源: 互联网

标签:数据库 连不上 实例 appconfig 斜杠 字符串 再也 连接


前言

大家好,初学者遇到数据库连接不上,是很常见的情况,可能会以各种形式呈现出来,今天跟大家分享一下,如何解决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-

标签:数据库,连不上,实例,appconfig,斜杠,字符串,再也,连接
来源: https://www.cnblogs.com/xiketang/p/15699191.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有