在 ASP.NET 中处理 DBNull 和 null
重写这些(错误)行的最佳方法是什么?
布尔?结果 = dr["结果"] == DBNull.Value ? null : Convert.ToInt32(dr["结果"]);
...和...
博士[“结果”]=结果?? DBNull.Value;
两者都不能编译。
我正在使用 MySql 连接器,但它不允许我设置,例如, dr["result"] = null;
这是我第一次尝试的。
是否有更合适的 .NET 数据类型来表示 MySql 可空 tinyint(1)
?
What is the best way of rewriting these (erroneous) lines?
bool? result = dr["result"] == DBNull.Value ? null : Convert.ToInt32(dr["result"]);
...and...
dr["result"] = result ?? DBNull.Value;
Both do not compile.
I am using the MySql connector and it doesn't let me set, for example, dr["result"] = null;
which is what I first tried.
Is there an more suitable .NET data type for representing a MySql nullable tinyint(1)
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
怎么样:
您的建议无法编译的原因是三元运算符
?:
的两个替代方案必须具有相同的类型。DBNull.Value
显然与bool?
类型不同。然而,将bool?
转换为object
会使它们成为相同的类型。类似的规则适用于第二行。How about:
The reason your suggestion does not compile is that both alternatives of the ternary operator
?:
must have the same type.DBNull.Value
obviously is not the same type as abool?
. Casting thebool?
to anobject
however makes them both the same type. Similar rules apply on the second row.如果您使用存储过程或 SQL 查询,那么您可以使用 SQL 的
ISNULL()
函数来处理 NULL...If you are using a stored procedure or SQL queries then you can use
ISNULL()
function of SQL to handle NULL...