C#数据库连接的判断
publicSqlConnectionmyConnection;在publicDB(){myConnection=newSqlConnection();//myConne...
public SqlConnection myConnection;
在
public DB()
{
myConnection = new SqlConnection();
//myConnection.ConnectionString = @"Server=192.168.173.11;User ID=sa;password=sa;Database=PRDB";
string sConnectionStr = "";
sConnectionStr += "Server=" + ConfigurationManager.AppSettings["Server"].ToString() + ";";
sConnectionStr += "UID=" + ConfigurationManager.AppSettings["UserId"].ToString() + ";";
sConnectionStr += "PWD=" + ConfigurationManager.AppSettings["Password"].ToString() + ";";
sConnectionStr += "Database=" + ConfigurationManager.AppSettings["Database"].ToString();
myConnection.ConnectionString = sConnectionStr;
//myConnection.ConnectionString = @"Server=192.168.168.111\sqlexpress;User ID=sa;password=123456;Database=PRDB_TEST";
//myConnection.ConnectionString = @"Server=(local)\SQLEXPRESS;User ID=sa;password=123456;Database=PRDB_TEST";
}
然后
public void Close()
{
if (myConnection != null && myConnection.State.ToString() != "Closed")
{
myConnection.Close();
}
}
为什么要判断数据库不等于空呢 展开
在
public DB()
{
myConnection = new SqlConnection();
//myConnection.ConnectionString = @"Server=192.168.173.11;User ID=sa;password=sa;Database=PRDB";
string sConnectionStr = "";
sConnectionStr += "Server=" + ConfigurationManager.AppSettings["Server"].ToString() + ";";
sConnectionStr += "UID=" + ConfigurationManager.AppSettings["UserId"].ToString() + ";";
sConnectionStr += "PWD=" + ConfigurationManager.AppSettings["Password"].ToString() + ";";
sConnectionStr += "Database=" + ConfigurationManager.AppSettings["Database"].ToString();
myConnection.ConnectionString = sConnectionStr;
//myConnection.ConnectionString = @"Server=192.168.168.111\sqlexpress;User ID=sa;password=123456;Database=PRDB_TEST";
//myConnection.ConnectionString = @"Server=(local)\SQLEXPRESS;User ID=sa;password=123456;Database=PRDB_TEST";
}
然后
public void Close()
{
if (myConnection != null && myConnection.State.ToString() != "Closed")
{
myConnection.Close();
}
}
为什么要判断数据库不等于空呢 展开
4个回答
展开全部
这个纯属是容错的手段,如果你确信自己的myConnection 一定new过了,那么判断null这个可以删掉。
但是,例如,你的代码里还没有执行DB(),此时myConnection并没有new,也就是说它现在是空的,那么如果执行Close(),一定会引发空引用异常。
哦,对了,你是不是不明白为什么要new呢? new这个动作是分配内存空间,public SqlConnection myConnection;这一句只是告诉系统,有SqlConnection 这个引用了,但是还没有给它分配内存,此时它是不能工作的。知道new了,它才算有实质性的内容。
但是,例如,你的代码里还没有执行DB(),此时myConnection并没有new,也就是说它现在是空的,那么如果执行Close(),一定会引发空引用异常。
哦,对了,你是不是不明白为什么要new呢? new这个动作是分配内存空间,public SqlConnection myConnection;这一句只是告诉系统,有SqlConnection 这个引用了,但是还没有给它分配内存,此时它是不能工作的。知道new了,它才算有实质性的内容。
展开全部
判断这个对象是否存在,如果 程序执行过程中发生异常,有可能已经释放了这个对象的堆内存,
调用这个类的close方法,就先要判断对象是否存在,如果不判断,可能出错
调用这个类的close方法,就先要判断对象是否存在,如果不判断,可能出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public SqlConnection myConnection;没有实例化,为空。如果不执行public DB(),直接执行Close();会抱错的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的myConnection 的访问属性是公共的,所以外面也可以设置值,如果外面设置为null了,你myConnection.Close()的时候就会出错,除非这个属性私有访问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询