如何在c#中為數據表的數字字段插入空值?

c# insert null numeric sqlbulkcopy

考慮我的動態生成的數據表包含以下文件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;但它似乎不起作用......

一般承認的答案

我通過為它分配一個空值來實現它....

if(dr["Mob2"] == "")
  dr["Mob2"] =null;

熱門答案

您確定應用程序中的其他位置不會發生錯誤嗎?如果您的DataColumn甚至知道它包含十進制值而不是字符串,您沒有定義其DataType。

無論如何錯誤說問題是一個字符串 - 十進制轉換(不是一個空的問題),所以當你讀第二行時,我認為你收到一個emty字符串“”而不是null。如果在調用Rows.Add之前它們包含空字符串,請嘗試將數據數組的字段設置為null



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow