2010-05-28 70 views
0

考慮我的動態生成的數據表包含以下的Fileds Id,Name,Mob1,Mob2如何插入在C#中的數據表中的數字字段空值?

如果我的表具有這樣它獲得成功插入,

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.

我產生由R我的數據表eadingt 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); 
    } 

任何建議如何BulkCopy期間在C#中插入用於數字字段空值...

編輯:

我想這dt.Columns["Mob2"].AllowDBNull = true;,但它不會似乎工作...

+0

在數據庫,列屬性是否設置爲接受NULL值? 數據庫中列的數據類型是什麼? – 2010-05-28 06:39:26

+0

@ranhiru雅它的存在'MobileNo2(數字(18,0),空)'... – 2010-05-28 06:43:34

+0

順便說一句,儲存電話號碼作爲一個數字是你「可以」失去一個壞主意的任何一位的0 – 2010-05-28 06:53:51

回答

1

之前,我得到它通過分配一個空值到它的工作....

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

你肯定不會出現錯誤別的地方在你的應用程序? 如何劑量您的DataColumn甚至不知道它包含十進制值,而不是字符串,你不定義它的數據類型。

反正錯誤說,這個問題是一個字符串 - 十進制轉換(不是爲空的問題),所以我覺得當你讀到第二行您收到emty字符串「」,而不是空。 嘗試manully設置你的數據陣列的字段設置爲null,如果它們包含空字符串調用Rows.Add

相關問題