[英]How to insert null value for numeric field of a datatable in c#?
考慮到我動態生成的數據表包含以下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;
但它似乎不起作用......
您確定該錯誤不會在應用程序中的其他地方發生嗎? 您的DataColumn甚至知道它包含十進制值而不是字符串的劑量,也沒有定義其DataType。
無論如何,錯誤表明問題是字符串-十進制轉換(不是is-null問題),因此我認為您在讀取第二行時收到的是空字符串“”而不是null。 如果在調用Rows.Add
之前,嘗試將數據數組的字段手動設置為null(如果它們包含空字符串)。
我通過為其分配一個空值來使其工作。
if(dr["Mob2"] == "")
dr["Mob2"] =null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.