c# - 在 C# 中检查 DBNull

标签 c# dbnull

我有一个 StronglyTyped 数据行对象,我可以像这样访问它。

accountFilter.Currency_ID

Currency_ID(Int 类型)是行名称。 AccountFilter 是 DataRow。 当它给出一个值时,没问题。但当列值为 NULL 时,会给出 DBNull 异常。我想检查 DBNull 的值,但它不起作用。

bool a = Convert.IsDBNull(accountFilter.Currency_ID.ToString()); //doesnt work

these示例不起作用。

有什么解决办法吗?

最佳答案

通常,类型化数据集表中的一行具有 IsXYZNull()每个可空列的方法。你试过吗

bool a = accountFilter.IsCurrency_IDNull();

然而,这仅在 accountFilter 时有效。不是 DataRow 类型而是来自类型化数据集的专用数据行类型

例如:如果您有一个类型化数据集,其中包含名为 Test 的表,会有一个专门的表类TestTable和一个名为 TestTableRow 的专用数据行类。如果Test表包含可为空字段 TestFieldTestTableRow类将包含一个方法 IsTestFieldNull() ,这样你就可以调用

bool isnull = testTable[0].IsTestFieldNull();

判断是否TestField TestTable testTable 第一行中的字段是null .

请注意,以下内容不起作用,因为结果不是 TestTableRow 类型但属于 DataRow 类型,所以你必须将其转换为 TestTableRow :

bool isnull = testTable.Rows[0].IsTestFieldNull(); // Won't compile
bool isnull = ((TestTableRow)testTable.Rows[0]).IsTestFieldNull(); // Will compile because of cast

关于c# - 在 C# 中检查 DBNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606029/

相关文章:

c# - 做数据库操作时线程是否阻塞?

c# - Visual Studio 无法打开 cshtml 文件

c# - 在 C# 中使用十六进制文字将整数设置为负值

c# - DBNull.Value.Equals() 检查的性能如何?

sql-server - 恢复数据库 SQL Server - 数据为空,不能对空值调用此方法或属性

c# - 将字符串转换为 Int(不解析)

c# - Irony 中的空白终止符和 MakePlusRule

c# - 如何处理来自 SQL Server 的 DBNull DateTime 字段?

c# - DBNull 检查 ExecuteScalar

sql-server-2008 - 如何确定参数值是否传递给存储过程