private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sql = string.Format("select ClassName from C where ClassNo = '{0}'",classname1.Text);
            SqlCommand cmd = new SqlCommand(sql,dbhelp.hong);
            dbhelp.hong.Open();
            cmd.CommandText = sql;
            classname1.Text = cmd.ExecuteScalar().ToString();
            dbhelp.hong.Close();
        }这段代码会出现未将对象引用到对象实例中,请问这是怎么回事,要怎么改(请附代码),谢谢了

解决方案 »

  1.   

     classname1.Text = cmd.ExecuteScalar().ToString();
      

  2.   

    搞明白为什么 cmd.ExecuteScalar() 结果为null。
      

  3.   

    回复4楼:我不太懂  我也知道cmd.ExecuteScalar() 结果为null,但是不知道怎么解决
      

  4.   

    看详细的错误堆栈,会告诉你哪一行出错了。光看代码,有两个地方可能有null reference的地方:1. dbhelp.hong connection没取到。
    2. cmd.ExecuteScalar().ToString(); 数据没取到。
      

  5.   

    回复6楼:错误堆栈中提示是
    未处理 System.NullReferenceException
      Message="未将对象引用设置到对象的实例。"
      Source="MyLastWork"
      StackTrace:
           在 MyLastWork.Classmod.comboBox2_SelectedIndexChanged(Object sender, EventArgs e) 位置 C:\Documents and Settings\Administrator\桌面\MyWork\MyLastWork\MyLastWork\Classmod.cs:行号 199
    是cmd.ExecuteScalar().ToString(); 这行错误
      

  6.   

    回复8楼:
            private static string conn = "data source =.; initial catalog = Mydatabase3; UID = sa;PWD = 0";
            public static SqlConnection hong = new SqlConnection(conn);
      

  7.   

    是要根据combobox选中的内容来查询?string sql = string.Format("select ClassName from C where ClassNo = '{0}'",comboBox1.SelectedValue);
    string sql = string.Format("select ClassName from C where ClassNo = '{0}'",comboBox1.SelectedText);
      

  8.   

    那你改成上面试试看,上面comboBox1打错了应该是comboBox2
      

  9.   

    试了,依然还是这个问题呢,请问是不是ExecuteScalar() 的问题
      

  10.   

    把 sql debug的结果,拷贝到sql 查询器里,查查,数据库有这条数据吗?
      

  11.   

    谢谢大家了  是我自己搞错了,不知怎么的把combobox2写成了classname1,问题出在这