C#でデータテーブルの数値フィールドにnull値を挿入するには?

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.

私はreadingt a csvファイルによって私のdatatableを生成し、

    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の間に数値フィールドにnull値を挿入するか提案

編集:

私はこのdt.Columns["Mob2"].AllowDBNull = true;しかし、それは動作していないようです...

受け入れられた回答

私はそれにnull値を割り当てることによって働いている....

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

人気のある回答

アプリケーションのどこか他の場所でエラーが発生していないと確信できますか?あなたのDataColumnがそれが10進値で文字列ではないことをどのくらい知っていても、あなたはDataTypeを定義していません。

とにかく、問題は文字列小数変換(is-nullの問題ではない)だから、2番目の行を読むときにemty文字列をnullではなく受け取ったと思います。あなたが呼び出す前に、彼らは空の文字列が含まれている場合はnullにあなたのデータ配列のフィールドを設定manullyしてみRows.Add



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ