5

我正在开发 WCF 服务,在该服务中,我尝试将传递给该方法的数据表中的数据加载到本地数据库中的另一个数据表中(在这种情况下,“本地”数据库是 SQL Server 数据库在 Windows 2003 服务器上)。当我这样做时,我收到以下错误消息:

“表 'ASIVocationalNeeds' 中列 'VocNeedDesc' 的值是 DBNull。”

这实际上是可以的,因为表 ASILocationalNeeds 中的列 VocNeedDesc 允许空值。最初我只是将 VocNeedDesc 的值从传递的表分配给本地表,但我得到了那个错误。所以接下来我更改了我的代码来检查 VocNeedDesc 的值是否为空,如果是,我将 string.Empty 分配给该值,否则我分配了传递的值,但我仍然收到错误消息。我很难过;不知道为什么我会收到此错误。这是相关的代码段:

localEmploy.ASIVocationalNeeds.Rows.Add(clientNumber,
    caseNumber,
    0,
    EmploymentDataSet.ASIVocationalNeeds[i].VocNeedType,
    (EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc == null ? string.Empty : EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc));

您是否尝试过将其与DBNull.Value进行比较?

代码可能看起来像

EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc == DBNull.Value ? string.Empty : EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc));
4

2 回答 2

7

DBNull 检查不适用于整列的单元格值

所以试试这个

EmploymentDataSet.ASIVocationalNeeds.Rows[i]["VocNeedDesc"] == DBNull.Value ? string.Empty : EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc));

如果您使用的是 typeDatset ,则可以将空值检查为

((ASIVocationalNeedsRow)EmploymentDataSet.ASIVocationalNeeds.Rows[i]).isVocNeedDescnull() ? string.Empty : EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc));
于 2012-04-18T04:48:08.833 回答
0

您是否尝试过将其与DBNull.Value进行比较?

代码可能看起来像

EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc == DBNull.Value ? string.Empty : EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc));
于 2012-04-17T17:41:00.470 回答