错误提示为:
////////////////////////////////
未将对象引用设置到对象的实例。 
说明: 执行当前 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()方法就会报错!!用了很长一短时间了都没出问题,现在突然挂了,搞了几天不知道是那里的问题,以前也是这样用的,觉的自己好菜各位摆脱啦!!!!

解决方案 »

  1.   

    你写的SqlConnection()构造方法里应该写的是数据库连接字符串呀,你写的是什么?连接失败,自然打开失败了!
      

  2.   

    各位,有谁遇到过这样的问题吗?up up up 
      

  3.   

    有个变量 写掉了
    protected static string strconn=System.Configuration.ConfigurationSettings.AppSettings["lj"];
      

  4.   

    strconn 
    是在哪里定义的呢?
      

  5.   

    第一检,查你连接字符.实例化那里代码.其二,楼主在打开时先判断一下conn状态是否打开.
    如:
    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(); 
    }   } 
      

  6.   

    strconn 就在DataBase里定义了的protected   static   string   strconn=System.Configuration.ConfigurationSettings.AppSettings["lj"];
    哎 晕倒 问题都没提好 
      

  7.   

    webconfig 里是这样定义的
    <appSettings>
    <add key="lj" value="server=(local);uid=sa;pwd=123;database=boysw;Max Pool Size=512;"></add>
      </appSettings>
      

  8.   

    试试这个:
    <add key="lj" value="Data Source=.;Initial Catalog=boysw;password=123;Persist Security Info=True;User ID=sa" />
      

  9.   

    不支持关键字: “pecurity info”。 
    是什么意思 不要可以吗
      

  10.   


    <add key="lj" value="Data Source=.;Initial Catalog=fst_center;password=123456;User ID=sa" />
      

  11.   

    完了 还是不行啊 
    <add key="lj" value="Data Source=.;Initial Catalog=boysw;password=123;User ID=sa" />
      

  12.   

    看来不是连接字符问题了..
    楼主也把这句conn=new SqlConnection(strconn); 放在Try里.看看到这句会不会出错.看他错误信息是什么.
      

  13.   

    连接后关闭是必然的.没事的.
    所以在你打开之前加个判断,如果是Close就打开.
      

  14.   

    还是报这个错误////////////////
    未将对象引用设置到对象的实例。 
    说明: 执行当前 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");
     
      

  15.   

    没有其它服务器公司 就我一个人用.net 莫非真的要重新装过 哎!!!
      

  16.   

    那如果我直接从表示层 调用数据层的DataSet 应该不会出问题吧
      

  17.   

    你的VS 或者Sql Server是否重新安装过? 是否是Sql Server 2000或2005的版本的问题?两个版本的数据库连接串是不同的。
      

  18.   

        在应用程序的页面创建一个访问层的类才能访问DataBase.cs这个文件,你看你的错误是什么,未将对象实例化,实例后试一试.
      

  19.   

    //private DataSet ds; //首先注释掉这个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;
      

  20.   

    下面是DataBase.cs类里面的所有方法 不知道是不是环境的问题还是什么程序设计的问题。
    昨天该了一天 所以数据的连接都是打开后关闭的。上午运行了一下好了 可现在一运行又出错了。相当郁闷。
    ////公共变量
    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;
    }
      

  21.   

    连接字符串是没什么问题的啦,我觉得主要还是在新定义一个连接并打开后没有关闭,就有再次重新定义这个连接,可试着:
    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"]);
      

  22.   

    通过测试 重新安装了sql2000 到现在没出问题 数据连接后都关闭以前做的时候有些没注意.谢谢给位大虾的帮助!祝福你们.