Как вставить нулевое значение для числового поля данных в C #? - PullRequest
0 голосов
/ 28 мая 2010

Рассмотрим Мой динамически сгенерированный набор данных, содержащий следующие поля 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);
    }

Любое предложение, как вставить нулевое значение для числового поля во время BulkCopy в c # ...

EDIT:

Я попробовал это dt.Columns["Mob2"].AllowDBNull = true;, но, похоже, это не работает ...

Ответы [ 2 ]

1 голос
/ 28 мая 2010

Я получил его, присвоив ему нулевое значение ....

if(dr["Mob2"] == "")
  dr["Mob2"] =null;
1 голос
/ 28 мая 2010

Вы уверены, что ошибка не возникает где-то еще в вашем приложении? Как доза ваш DataColumn даже знает, что он содержит десятичные значения, а не строки, вы не определяете его DataType.

В любом случае ошибка говорит о том, что проблема заключается в строковом преобразовании (не в нулевой проблеме), поэтому я думаю, что при чтении второй строки вы получаете пустую строку "", а не ноль Попробуйте вручную установить поля вашего массива данных на нуль, если они содержат пустые строки, прежде чем вы вызовете Rows.Add

...