在 ASP.NET 中处理 DBNull 和 null

发布于 2024-12-03 22:50:38 字数 375 浏览 3 评论 0原文

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

布尔?结果 = 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

°如果伤别离去 2024-12-10 22:50:38

怎么样:

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

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

How about:

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

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 a bool?. Casting the bool? to an object however makes them both the same type. Similar rules apply on the second row.

北凤男飞 2024-12-10 22:50:38

如果您使用存储过程或 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...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文