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

Rod*_*Rod 2 .net wcf visual-studio-2008

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

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

这实际上是可以的,因为表ASIVocationalNeeds中的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));
Run Code Online (Sandbox Code Playgroud)

Sad*_*daf 5

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

所以试试这个

EmploymentDataSet.ASIVocationalNeeds.Rows[i]["VocNeedDesc"] == DBNull.Value ? string.Empty : EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc));
Run Code Online (Sandbox Code Playgroud)

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

((ASIVocationalNeedsRow)EmploymentDataSet.ASIVocationalNeeds.Rows[i]).isVocNeedDescnull() ? string.Empty : EmploymentDataSet.ASIVocationalNeeds[i].VocNeedDesc));
Run Code Online (Sandbox Code Playgroud)