考虑我动态生成的数据表包含以下fileds 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;
,但它似乎不起作用......
答案 0 :(得分:1)
您确定应用程序中的其他位置不会发生错误吗? 您的DataColumn甚至知道它包含十进制值而不是字符串,您没有定义其DataType。
无论如何错误说问题是一个字符串 - 十进制转换(不是一个空的问题),所以当你读第二行时,我认为你收到一个emty字符串“”而不是null。
如果在调用Rows.Add
答案 1 :(得分:1)
我通过为它分配一个空值来使它工作....
if(dr["Mob2"] == "")
dr["Mob2"] =null;