这个字段值为null值,使用时先判断一下

解决方案 »

  1.   

    我之前有判断过,是null,可是为什么会出现这种情况呢?明明不是null呀
      

  2.   

    有一点你要特别注意,null和DBNull.value不是同一个概念,对数据表的列来说,不是null,而是DBNll.value
      

  3.   

    这样不对呀。。因为数据库中bit类型对应的是Boolean
      

  4.   

    数据库中bit类型对应的是Boolean
    像这种设置一个默认值好了!
    DataTable用DBNull.Value验证下数据是否为空
    如果其他数据类型,最好是判断下Convert.String()是否是null或者Empty。
      

  5.   


    请问下
     "SELECT SGK FROM Group_SGK3 "
    你这里面有“state1”列?????
    sql语句中加上这一列吧
      

  6.   

    state1从哪里来的?sql语句里木有啊。
      

  7.   

    你没有查询这个列的数据: string strSQL = "SELECT SGK FROM Group_SGK3 ";
    也许以前的DataTable里面有这个列,但是你这里重新填充该DataTable数据时使用的查询语句里面没有获取该列的数据。
      

  8.   


    是这样的!如果搞不清楚null和DBNull的区别,就会被自己给弄糊涂了。
      

  9.   

    其实楼主没有领会一个关键问题 —— 数据库与C# 的类型如何正确对应?啥意思?bit --> bool 没有错, 
    但 bit 类型允许为null时, 你对应什么呢?
    换句话说: 人家问你你的钢笔是否能借用一下, 但是你回复是不知道, 你要人家如何理解你的意思?几种解决方法:
    1. 在 C# 中设定为 bool? 类型, 转换时: 
    bool? result = rdr["state1"]==DBNull.value? null :  Convert.ToBoolean(rdr["state1"]);2. 在sql语句中设定isnull的情况:
    例 "SELECT isnull(SGK,0) SGK FROM Group_SGK3"3. 将表中字段SGK改为非空(not null)即可
      

  10.   

    楼主,DBNull是C#中的,你可以给这个数据一个默认值,它就不会报这样的错了
      

  11.   

    你数据库里面有,但你没读出来啊!你的SQL语句只读取了SGK列啊