SqlCommand cmd = new SqlCommand("select column from table1 where ....",sqlConnection1)
sqlConnection1.Open();
string column1=(string)cmd.ExecuteScalar();
sqlConnection1.Close();
这个查询语句是要查找表中的某一个字段的值,如果没有该字段的值为空时,cmd.ExecuteScalar()一句就会出错:末将对象应用到对象的实例.
在不知道查询的结果是否为空时,怎样避免这种错误的发生.
应该用哪个execute...

解决方案 »

  1.   

    查询 is not null 字段
      

  2.   

    用0来代替NULL
     ISNULL(字段名,0)
      

  3.   

    SqlCommand cmd = new SqlCommand("select ISNULL(column," ") from table1 where ....",sqlConnection1)
    sqlConnection1.Open();
    string column1=(string)cmd.ExecuteScalar();
    sqlConnection1.Close();
      

  4.   

    SqlCommand cmd = new SqlCommand("select ISNULL(column,' ') from table1 where ....",sqlConnection1)
    sqlConnection1.Open();
    string column1=(string)cmd.ExecuteScalar();
    sqlConnection1.Close();
      

  5.   

    object obj=cmd.ExecuteScalar();
    if(obj==Null||obj==DBNull.value)
    {
    column1="";
    }
    else
    {
    column1
    }
      

  6.   

    object obj=cmd.ExecuteScalar();
    if(obj==Null||obj==DBNull.value)
    {
         column1="";
    }
    else
    {
         column1=...
    }
    ==============================这个蛮好
      

  7.   

    SqlCommand cmd = new SqlCommand("select ISNULL(column,' ') from table1 where ....",sqlConnection1)
      

  8.   

    sql server 是 isnull(,)
    oracle    nvl(,)不一样的数据库 内部方法都不一样
    所以还是 在C#中 用object 比较通用点
      

  9.   

    string column1=Convert.ToString(cmd.ExecuteScalar());这样应该是可以的
      

  10.   

    isnull(column,'')怎么会报错啊!说''附近有错误!
    高歌和lovejxl的方法就是我现在用的.在cmd.ExecuteScalar()的时候如果没有查到相应的结果,就会报错!
      

  11.   

    string column1=(string)cmd.ExecuteScalar();---
    这句改为
    string column1=cmd.ExecuteScalar()+"";
    这是最简单的办法,但和你的原意是有一点点区别的,看情况使用
      

  12.   

    不明白 cmd.ExecuteScalar()+"".没这样用过
    因为当查询结果不存在时,在cmd.ExecuteScalar()这就会报错.
      

  13.   

    object obj=cmd.ExecuteScalar();
    if(obj==Null||obj==DBNull.value)
    {
    column1="";
    }
    else
    {
    column1=obj;
    }你试过么?
      

  14.   

    不明白 cmd.ExecuteScalar()+"".没这样用过
    因为当查询结果不存在时,在cmd.ExecuteScalar()这就会报错.
    --那你能明白我楼上的同志的写法么,
    column1=cmd.ExecuteScalar()+"";
    这样写的效果和我楼上是完全一样的
      

  15.   

    报错?我怎么不报错...       private void button1_Click(object sender, EventArgs e)
            {
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = "server=.;uid=sa";
                conn.Open();
                SqlCommand cmd = new SqlCommand("select 1 where 1=2", conn);
                string a = cmd.ExecuteScalar() + "";
                MessageBox.Show(a);
            }
      

  16.   

    现在用cmd.ExecuteScalar() 可以了,不报错了.不过又出新问题了.
    当查询结果不存在时,cmd.ExecuteScalar()得到的应该是null值吧.
    把查询到的UniqueIdentifier  类型的字段的值作为新插入的记录的值,如果此字段为空,就会报错,说需要该字段的参数值,但没有提供该参数值.