【问题标题】:object reference not set to an instance of an object asp.net对象引用未设置为对象 asp.net 的实例
【发布时间】:2013-10-28 16:19:22
【问题描述】:

在下面的代码中,当我按下 button2 时,它会说:

对象引用未设置为对象的实例

发生了什么事?

public partial class rec : System.Web.UI.Page
{
   protected void Button1_Click(object sender, EventArgs e)
   {
      try
      {
          SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|DB.mdf;Integrated Security=True;User Instance=True");

          SqlCommand cmd;
          con.Open();

          cmd = new SqlCommand("SELECT  SrviceType, Msg FROM OrderNum ", con);

          SqlDataReader dr;
          dr = cmd.ExecuteReader();

          dr.Read();

          Label1.Text = dr[0].ToString();
          TextBox1.Text = dr[1].ToString();
      }
      catch (Exception ex)
      {
          System.Windows.Forms.MessageBox.Show(ex.Message);
      }
  }

  protected  void Button2_Click(object sender, EventArgs e)
  {
      SqlDataReader dr = null;

      try
      {
          dr.Read();
          Label1.Text = dr[0].ToString();
          TextBox1.Text = dr[1].ToString();
      }
      catch (Exception ex)
      {
          System.Windows.Forms.MessageBox.Show(ex.Message);
      }
  }
}

【问题讨论】:

  • 您声明SqlDataReader dr = null;,然后在下一行对null 调用Read() 方法,您还期待什么?
  • 如果我把 SqlDataReader dr;它会给我这个错误 :: Use of unassigned local variable 'dr'
  • 您需要阅读变量范围。它给你这个错误是因为“dr”没有被赋予任何价值。
  • 谢谢你能告诉我在我的情况下解决方案是什么
  • NullReferenceException 的几乎所有情况都是相同的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。

标签: c# asp.net nullreferenceexception


【解决方案1】:
SqlDataReader dr = null;

然后你尝试从

读取空对象
dr.Read();

如果你想获取Button_click1数据后缀,请确保这是你不能保持状态的网页

【讨论】:

    【解决方案2】:

    您需要将阅读器dr 分配给一个命令。

    看看这里的例子: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx

    【讨论】:

      【解决方案3】:

      SqlDataReader 对象用于保存从数据库执行/获取数据的一次性结果。可用于遍历每一行以获取所需的列。 因此,在尝试从 SqlDataReader 对象读取之前,它应该有一些数据。

      可以通过以下语句实现:

      SqlDataReader sqldatareaderobject=sqlcommandobject.ExecuteReader();

      您在 Button1_click 函数中遵循上述原则,但在 Button2_click 函数中缺少相同的原则。

      在您的情况下,SqlDataReader 对象“dr”包含 null,因为您错过了调用 ExecuteReader() 函数,并且当您在 null 对象 (dr) 之上调用 Read() 函数时,它会引发异常。

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-13
        • 2013-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        相关资源
        最近更新 更多