在ASP.NET中处理DBNull和null

时间:2011-09-10 17:40:30

标签: asp.net mysql database null dbnull

重写这些(错误的)行的最佳方法是什么?

  

BOOL? result = dr [“result”] == DBNull.Value? null:Convert.ToInt32(dr [“result”]);

...和...

  

dr [“result”] =结果?? DBNull.Value;

两者都不编译。

我正在使用MySql连接器,它不允许我设置,例如,dr["result"] = null;这是我第一次尝试。

是否有更合适的.NET数据类型来表示MySql可空tinyint(1)

2 个答案:

答案 0 :(得分:2)

怎么样:

     dr["Hello"] = (object)result ?? DBNull.Value;
     bool? result = dr["result"] == DBNull.Value ? null : (bool?)(Convert.ToInt32(dr["result"]) != 0);

您的建议未编译的原因是三元运算符?:的两个备选方案必须具有相同的类型。 DBNull.Value显然与bool?的类型不同。然而,将bool?投射到object会使它们成为同一类型。类似的规则适用于第二行。

答案 1 :(得分:-1)

如果您正在使用存储过程或SQL查询,那么您可以使用SQL的ISNULL()函数来处理NULL ...