获取“表中的<column>的值是DBNull”错误<table> </table> </column>

时间:2012-04-17 17:30:37

标签: .net wcf visual-studio-2008

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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));

答案 1 :(得分:0)

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

代码可能看起来像

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