未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 177: this.dgOrderManager.Visible=true;
行 178: SqlConnection con=DB.con();
行 179: con.Open();
180: SqlCommand cmd=new SqlCommand("select * from Orders",con);
行 181: SqlDataReader sdr=cmd.ExecuteReader();
错误出现在con.Open(); 时不时报这样的错,有时间我把电脑重新启动一下就有没问题了.可今天我都重新启动3次了还是报这个错.什么原因,谁能帮我解决.在线等...先谢谢了
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 177: this.dgOrderManager.Visible=true;
行 178: SqlConnection con=DB.con();
行 179: con.Open();
180: SqlCommand cmd=new SqlCommand("select * from Orders",con);
行 181: SqlDataReader sdr=cmd.ExecuteReader();
错误出现在con.Open(); 时不时报这样的错,有时间我把电脑重新启动一下就有没问题了.可今天我都重新启动3次了还是报这个错.什么原因,谁能帮我解决.在线等...先谢谢了
SqlConnection conn=new SqlConnection(Connstring);
conn.open();
// Code here
//
Conn.Close();
using System.Data.SqlClient;namespace OnlineShop.myclass
{
/// <summary>
/// DB 的摘要说明。
/// </summary>
public class DB
{
public DB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static SqlConnection con()
{
return new SqlConnection("Server=.;database=MyBookShop;uid=sa;pwd=;");
}
}
}
using System.Data.SqlClient;
没有连接上数据库,这都不知道呀,还当程序员了。 晕 你就怎么知道我没连上数据库的列 不晓得原因就莫乱回贴. 做你的程序员去咯
行 178:SqlConnection con=DB.con();
行 179:con.Open();
180:SqlCommand cmd=new SqlCommand("select * from Orders",con);
行 181:SqlDataReader sdr=cmd.ExecuteReader();把
SqlConnection con=DB.con();
con.Open();
放在
SqlDataReader sdr=cmd.ExecuteReader();的上面一行
if (con.State == ConnectionState.Closed)
{
con.Open();
}
if (con.State == ConnectionState.Closed)
{
con.Open();
}
执行到这里就报那个错,那么说明你的con并没有新建成功!不如你把这个方法里面这一句就直接放在你的方法里面来,
177:this.dgOrderManager.Visible=true;
行 178:SqlConnection con=new SqlConnection("Server=.;database=MyBookShop;uid=sa;pwd=;");
行 179:con.Open();
180:SqlCommand cmd=new SqlCommand("select * from Orders",con);
行 181:SqlDataReader sdr=cmd.ExecuteReader();
要是你以前关闭了的话 判断一下有没有关闭 才确认打开
SqlConnection con=DB.con();
if (con.State == ConnectionState.Closed)
{
con.Open();
}
记得
sdr.close
conn.close
2.如果不为空则如大家所言,你上次是用的连接可能没有关闭。可试试以下方法:try
{
if (con.State == ConnectionState.Closed) //检查连接状态
{
con.Open();
}
Sqlcom.ExecuteNonQuery(); //你要执行的代码
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.State == ConnectionState.Open) //关闭连接
{
con.Close();
}
}
单用户没问题,多用户会由于你已经在上一个方法里面释放掉,在这个方法里面调用了释放掉的con
所以会包错
{
con.Open();
SqlCommand cmd=new SqlCommand("select * from Orders",con);
SqlDataReader sdr=cmd.ExecuteReader();
......
} //注意你不必写con.Close(),写了反而多添运行时的毛病。