你的数据类型返回值可能是int型等不可能为null的类型,你判断null了

解决方案 »

  1.   

    object obj=cmd.ExecuteScalar();
     if (null != obj && System.DBNull.Value!=obj)
      

  2.   

    楼上正解!用System.DBNull.Value!=cmd.ExecuteScalar()即可
      

  3.   

    ExecuteScalar方法的返回值本来就是object类型...问题不在这儿,是你的SQL语句有问题...这里“spbh='" + textBox1.Text.Trim() + "'"”...如果spbh字段不是字符型不允许加“'”号...
      

  4.   


    对此表示异议,int型可以加单引号
      

  5.   

    OleDbCommand cmd = new OleDbCommand(sql, oleConnection1);
       OleDbDataReader reader = cmd.ExecuteReader();根据你的类型  if (null == reader.Read())标准表达式
    接分谢谢
     
      

  6.   

    去学学Jet SQL,SQL语言不是只有一种...ExecuteScalar方法的返回值本来就是object类型,值类型会装箱,绝不可能在这里出错...
      

  7.   

    瞪大你的[size=10px]小眼睛看一下[/size]你说的"如果spbh字段不是字符型不允许加“'”号..."
    对此表示异议,哪里说不是字符型的就不允许加单引号了?
      

  8.   

    别逃避问题这句你说的:
    这里“spbh='" + textBox1.Text.Trim() + "'"”...如果spbh字段不是字符型不允许加“'”号...请找出根据来说明 不是字符型的不允许加单引号
      

  9.   

    if (null == cmd.ExecuteScalar())//先改成 if ( cmd.ExecuteScalar()<=0)// 这个试下如果不行,那有可能是楼上说的 语句问题
      

  10.   

    朋友,sql server里面的int可以加单引号,但是在access里面就不行了,楼主用的Shu.mdb是access,所以不允许用单引号,你试试看就知道了