错误提示为:
////////////////////////////////
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 67: try
行 68: {
行 69: conn.Open();
行 70: SqlDataAdapter data = new SqlDataAdapter(sql,conn);
行 71: DataSet ds = new DataSet("ds");
//////////////////////////////////
DataBase.cs 数据连接类
//////////////////////
//公共变量
public SqlConnection conn;
public SqlCommand cmd;
public SqlDataReader dr;
private SqlDataAdapter data;
private DataSet ds;
//
//控件绑定方法
public DataSet dataadpter(string sql)
{
conn=new SqlConnection(strconn);
try
{
conn.Open();///////这行报错///////
SqlDataAdapter data = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet("ds");
data.Fill(ds);
return ds;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
conn.Close();
}
}
/////在表示层直接调用了上面的方法
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
public void zuixing()
{
string sql="select top 3 * from shop_shangpin order by id desc";
this.DataGrid1.DataSource=db.dataadpter(sql);
this.DataGrid1.DataBind();
}
}
////////////
所以其它地方只要调用到了dataadpter()方法就会报错!!用了很长一短时间了都没出问题,现在突然挂了,搞了几天不知道是那里的问题,以前也是这样用的,觉的自己好菜各位摆脱啦!!!!
////////////////////////////////
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 67: try
行 68: {
行 69: conn.Open();
行 70: SqlDataAdapter data = new SqlDataAdapter(sql,conn);
行 71: DataSet ds = new DataSet("ds");
//////////////////////////////////
DataBase.cs 数据连接类
//////////////////////
//公共变量
public SqlConnection conn;
public SqlCommand cmd;
public SqlDataReader dr;
private SqlDataAdapter data;
private DataSet ds;
//
//控件绑定方法
public DataSet dataadpter(string sql)
{
conn=new SqlConnection(strconn);
try
{
conn.Open();///////这行报错///////
SqlDataAdapter data = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet("ds");
data.Fill(ds);
return ds;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
conn.Close();
}
}
/////在表示层直接调用了上面的方法
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
public void zuixing()
{
string sql="select top 3 * from shop_shangpin order by id desc";
this.DataGrid1.DataSource=db.dataadpter(sql);
this.DataGrid1.DataBind();
}
}
////////////
所以其它地方只要调用到了dataadpter()方法就会报错!!用了很长一短时间了都没出问题,现在突然挂了,搞了几天不知道是那里的问题,以前也是这样用的,觉的自己好菜各位摆脱啦!!!!
protected static string strconn=System.Configuration.ConfigurationSettings.AppSettings["lj"];
是在哪里定义的呢?
如:
public DataSet dataadpter(string sql)
{
conn=new SqlConnection(strconn);
try
{
if (conn.State.ToString() == "Closed") conn.Open();///////这行报错/////// 这里加了判断
SqlDataAdapter data = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet("ds");
data.Fill(ds);
return ds;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
conn.Close();
} }
哎 晕倒 问题都没提好
<appSettings>
<add key="lj" value="server=(local);uid=sa;pwd=123;database=boysw;Max Pool Size=512;"></add>
</appSettings>
<add key="lj" value="Data Source=.;Initial Catalog=boysw;password=123;Persist Security Info=True;User ID=sa" />
是什么意思 不要可以吗
<add key="lj" value="Data Source=.;Initial Catalog=fst_center;password=123456;User ID=sa" />
<add key="lj" value="Data Source=.;Initial Catalog=boysw;password=123;User ID=sa" />
楼主也把这句conn=new SqlConnection(strconn); 放在Try里.看看到这句会不会出错.看他错误信息是什么.
所以在你打开之前加个判断,如果是Close就打开.
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 68: conn=new SqlConnection(strconn);
行 69: if(conn.State.ToString()=="Closed")
行 70: conn.Open();
行 71: SqlDataAdapter data = new SqlDataAdapter(sql,conn);
行 72: DataSet ds = new DataSet("ds");
//控件绑定方法
public DataSet dataadpter(string sql)
{
conn=new SqlConnection(strconn);
DataSet ds = new DataSet("ds");//定义在函数内try
{
conn.Open();///////这行报错///////
SqlDataAdapter data = new SqlDataAdapter(sql,conn); data.Fill(ds);}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
conn.Close();
}
return ds;}conn.Open的时候出错,
可能你new DataBase()以后执行的有DataReader 的操作,而且没有Close Connection;
昨天该了一天 所以数据的连接都是打开后关闭的。上午运行了一下好了 可现在一运行又出错了。相当郁闷。
////公共变量
public SqlConnection conn;
public SqlCommand cmd;
public SqlDataReader dr;
private SqlDataAdapter data;
private DataSet ds;
////方法
/////////读数据
public int dataread(string sql)
{
conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["lj"]);
conn.Open();
cmd=new SqlCommand(sql,conn);
dr=cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
try
{
return 1;
}
catch
{
return 0;
}
}
/////绑定
public DataSet dataadpter(string sql)
{
try
{
conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["lj"]);
if(conn.State.ToString()=="Closed")
conn.Open();////这行出错
SqlDataAdapter data = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet("ds");
data.Fill(ds);
return ds;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
conn.Close();
}
}
/////////在一个读数据
public SqlDataReader datareader(string sql)
{
conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["lj"]);
conn.Open();
cmd=new SqlCommand(sql,conn);
dr=cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
try
{
return dr;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
}
/////一个执行方法
public int count1(string strSql)
{
conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["lj"]);
conn.Open();
cmd=new SqlCommand(strSql,conn);
int i=(int)cmd.ExecuteScalar();
conn.Close();
return i;
}
public SqlDataReader datareader(string sql)
{
conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["lj"]);
conn.Open();
改为:
if(conn.State.ToString()=="Closed")
{
conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["lj"]);
conn.open();
}另外建议你用一些命名空间简化代码,如
using System;
using System.Configuration;
这样代码就可以简单点 conn=new SqlConnection(ConfigurationSettings.AppSettings["lj"]);