0

考虑我动态生成的数据表包含以下文件Id,Name,Mob1,Mob2

如果我的数据表有这个它会成功插入,

Id Name Mob1        Mob2
1  acp  9994564564  9568848526

但是当它是这样的时候,它会失败地说,

Id Name Mob1        Mob2
1  acp  9994564564  

The given value of type String from the data source cannot be converted to type decimal of the specified target column.

我通过读取一个 csv 文件来生成我的数据表,

    CSVReader reader = new CSVReader(CSVFile.PostedFile.InputStream);
    string[] headers = reader.GetCSVLine();
    DataTable dt = new DataTable();
    foreach (string strHeader in headers)
    {
        dt.Columns.Add(strHeader);
    }
    string[] data;
    while ((data = reader.GetCSVLine()) != null)
    {
        dt.Rows.Add(data);
    }

任何建议如何在 C# 中的 BulkCopy 期间为数字字段插入空值...

编辑:

我试过这个dt.Columns["Mob2"].AllowDBNull = true;,但它似乎不起作用......

4

2 回答 2

1

您确定该错误不会发生在您的应用程序的其他地方吗?你的 DataColumn 怎么知道它包含十进制值而不是字符串,你没有定义它的 DataType。

无论如何,错误表明问题是字符串 - 十进制转换(不是 is-null 问题),所以我认为您在阅读第二行时收到一个空字符串 "" 而不是 null。如果在调用之前包含空字符串,请尝试将数据数组的字段手动设置为 nullRows.Add

于 2010-05-28T09:14:55.893 回答
1

我通过为其分配一个空值来使其工作......

if(dr["Mob2"] == "")
  dr["Mob2"] =null;
于 2010-05-28T09:25:29.980 回答