0

私の動的に生成されたデータテーブルには、次のフィールドが含まれていると考えてください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中に数値フィールドにnull値を挿入する方法についての提案...

編集:

これを試してみましdt.Columns["Mob2"].AllowDBNull = true;たが、うまくいかないようです...

4

2 に答える 2

1

アプリケーションの他の場所でエラーが発生していないことを確認してください。DataColumn は、文字列ではなく 10 進数の値が含まれていることをどのように認識しているのでしょうか。その DataType を定義していません。

とにかく、エラーは問題が文字列 - 10 進変換 (is-null の問題ではない) であることを示しているため、2 行目を読んだときに null ではなく空の文字列 "" を受け取ると思います。呼び出す前に、空の文字列が含まれている場合は、データ配列のフィールドを手動で null に設定してみてくださいRows.Add

于 2010-05-28T09:14:55.893 に答える
1

null値を割り当てることで機能しました....

if(dr["Mob2"] == "")
  dr["Mob2"] =null;
于 2010-05-28T09:25:29.980 に答える