zoukankan      html  css  js  c++  java
  • 再也不用担心连不上数据库了

    前言

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

  • 相关阅读:
    angular js 自定义指令
    web api 解决跨域的问题
    angular 监听ngrepeat结束时间
    redis关闭和启动
    intellij idea快捷键
    mysql连接字符串
    crontab命令格式
    maven中scope属性的
    maven pom文件元素说明
    引入maven以外的jar包
  • 原文地址:https://www.cnblogs.com/xiketang/p/15699191.html
Copyright © 2011-2022 走看看