一、sql连接属性未初始化异常介绍
我们在使用.net语言开发互联网项目连接数据库操作时经常会出现connectionstring属性尚未初始化这种sql连接异常问题,数据库服务会给我们报web请求时出现了没有处理的异常,需要我们解决,具体异常问题描述详见下图:
通常我们好好运行的项目突然之间就出现了这种属性未初始化的连接异常,但是有时候我们重启一下项目然后就好了,有些莫名其妙。
出现这种问题的原因有可能是数据库通道被我们关闭了,又或者关闭之后没有重新open一下,甚至有可能是我们编写的语法由于疏忽大意出现了问题,又或者是我们对配置信息的配置文件啊不是很了解,配置的地方少了东西或者没有配置完全。
出现connectionstring未初始化原因有很多种,在我们实际的工作项目中也总节了不少的这种经验,接下来我们就将出现这种问题的原因汇总一下给大家逐一解决。
二、connectionstring属性异常原因与解决办法
原因一:ConnectionString属性未完成赋值
很多程序开发者在做数据库连接时,通常就把数据库连接对象的链接信息编写到配置文件中灵活配置,因为将连接信息放在配置文件中一是方便数据库信息的修改,二是不需要再次编译很是方便,
但是很多朋友认为在配置文件中ConnectionString节点下添加上连接的字符串值就可以了,其实这是不正确的,我们只是配置了一下,运行的时候并没有将该字符串的值取出来做赋值操作,具体web.config配置文件的配置信息如下:
Initial Catalog=master;User ID=sa;Password=123456;” / >
因此,正确的解决办法是数据库连接时应该要将该配置文件中的信息读取出来进行实际的赋值,以上这种异常原因都是因为程序员认为ConnectionString已经赋值实际上却没有赋值,具体程序中读取值的具体操作代码如下所示:
string sqlConStr = WebConfigurationManager.ConnectionStrings
[“sqlConnectionString”].ConnectionString;
原因二:对象关闭释放后失效导致属性尚未初始化
有时候我们操作完一次连接查询出一次数据之后就会关闭资源释放连接,可能代码书写的不规范或者是对连接关闭释放不了解,链接对象释放之后就不可再用了,如果释放后再用就会显示sql属性尚未初始化的问题,这是本次问题的原因所在,具体详见下图中标注的代码:
所以这也解释了刚开始查询测试正常了,再查询就不行了的原因,就是因为链接被释放掉了,因此我们再次做链接查询时,应该要重新获取链接对象,正确的修改代码见下图。
原因三:conn.open()时链接字符串为空
如果我们将配置信息配置到web.config配置文件中的话,那么程序在在调用时应该手动编写代码读取配置文件中到那个数据库连接信息。
上图中的问题是并没有将数据库配置信息配置到web.config文件中,所以应该在查询数据这句代码之前声明连接对象的信息才对,上图中的标注代码中定义的是空值空字符串,这是一个很明显的低级错误,因此会报sql connectionstring属性尚未初始化,具体正确代码见下图:
以上即是我们总结的sql属性尚未初始化常见的问题问题原因与解决办法,我们在日常测试数据库连接时,首先应该要断点调试配置文件中的连接信息是否正确读取到,如果没有读取到显示为null值就应该检查配置文件书写的是否规范路径是否完整名称是否输入正确,或许是配置文件的书写出现了问题导致没能初始化成功。