簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM