未将对象引用设置到对象的实例。 
说明: 执行当前 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次了还是报这个错.什么原因,谁能帮我解决.在线等...先谢谢了
 

解决方案 »

  1.   

    lz:
    SqlConnection conn=new SqlConnection(Connstring);
    conn.open();
    // Code here
    //
    Conn.Close();
      

  2.   

    DB.con();里写的啥?return new SqlConnection("Server=.;database=MyBookShop;uid=sa;pwd=;");
      

  3.   

    using System;
    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=;");
    }
    }
    }
      

  4.   

    有没有引用命名空间
    using System.Data.SqlClient;
      

  5.   

    shuyan123() ( ) 信誉:100    Blog   加为好友  2007-06-29 13:39:12  得分: 0  
     
     
       没有连接上数据库,这都不知道呀,还当程序员了。  晕   你就怎么知道我没连上数据库的列   不晓得原因就莫乱回贴.  做你的程序员去咯
            
      
     
      

  6.   

    行 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();把
    SqlConnection con=DB.con();
    con.Open();
    放在
    SqlDataReader sdr=cmd.ExecuteReader();的上面一行
      

  7.   

    new SqlConnection("Server=.;database=MyBookShop;uid=sa;pwd=;"); 没有实例化
      

  8.   

    要是你以前关闭了的话 判断一下有没有关闭 才确认打开
     if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
      

  9.   

    SqlConnection con=DB.con();
    if (con.State == ConnectionState.Closed)
    {
    con.Open();
    }
      

  10.   

    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();
      

  11.   

    同意楼上的
    要是你以前关闭了的话 判断一下有没有关闭 才确认打开
    SqlConnection con=DB.con(); 
    if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
      

  12.   

    应该是没有关闭链接
    记得
    sdr.close
    conn.close
      

  13.   

    1.首先在行 178:SqlConnection con=DB.con();下检查一下 con 是否 = null
    2.如果不为空则如大家所言,你上次是用的连接可能没有关闭。可试试以下方法:try
            {
                if (con.State == ConnectionState.Closed)    //检查连接状态
                {
                    con.Open();
                }
                Sqlcom.ExecuteNonQuery();   //你要执行的代码
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (con.State == ConnectionState.Open)  //关闭连接
                {
                    con.Close();
                }
            }
      

  14.   

    补充一句:你使用了 SqlDataReader 需要关闭要先关 SqlDataReader  再关 SqlConnection
      

  15.   

    你确认你每次打开数据库连接之后都关闭了的吗!如果是的话,你是不是这么写了DB.con().close()这种写法是不行的,因为你DB.con()返回的是一个新的conn()这就是说你以前的那个连接并没有关闭
      

  16.   

    static 去掉,
    单用户没问题,多用户会由于你已经在上一个方法里面释放掉,在这个方法里面调用了释放掉的con
    所以会包错
      

  17.   

    可靠控制SqlConnection应该写:using(SqlConnection con=DB.con())
    {
        con.Open();
        SqlCommand cmd=new SqlCommand("select * from Orders",con);
        SqlDataReader sdr=cmd.ExecuteReader();
        ......
    }  //注意你不必写con.Close(),写了反而多添运行时的毛病。
      

  18.   

    这里不是static的变量,这个con()方法使用static并没有任何问题。