Присвойте значение Null столбцу Integer в DataTable - PullRequest
18 голосов
/ 15 июня 2011

У меня есть дата с одним столбцом "CustomerID" с целочисленным типом данных.Динамически я хочу добавить строки в DataTable.Для этого я создал один объект DataRow, например:

  DataTable dt = new DataTable();
  DataRow DR = dt.NewRow();
  DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);

Но если TextBox содержит пустую строку, он выдает ошибку.В этом случае я хочу присвоить нулевое значение CustomerID.Как это сделать?

Ответы [ 11 ]

27 голосов
/ 15 июня 2011

Нулевая / пустая строка имеет неправильный формат;вам нужно будет обнаружить этот сценарий и компенсировать:

    DR["CustomerID"] = string.IsNullOrWhiteSpace(text)
        ? DBNull.Value : (object)Convert.ToInt32(text);
4 голосов
/ 15 июня 2011
DR["CustomerID"] = !string.IsNullOrEmpty(TextBox1.Text)
                   ? Convert.ToInt32(TextBox1.Text)
                   : DBNull.Value;

Но вы должны также проверить, что значение является допустимым целым числом:

int value;
if(int.TryParse(TextBox1.Text, out value))
{
    DR["CustomerID"] = value;
}
else
{
    DR["CustomerID"] = DBNull.Value;
}
2 голосов
/ 15 июня 2011
Int32 Temp = 0;
if !(Int32.TryParse(TextBox1.Text,Temp))
    DR["CustomerID"] = DBNull.Value
else
    DR["CustomerID"] = Temp
2 голосов
/ 15 июня 2011

Сначала нужно проверить

if (TextBox1.Text.Length > 0)
{
   DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); ;
}
else
{
  DR["CustomerID"] = null;  
}
2 голосов
/ 15 июня 2011

Прежде всего, конечно, поле должно быть установлено как обнуляемое в БД.

А затем установите его на DBNull.Value

2 голосов
/ 15 июня 2011

Вы можете сделать это так:

DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ?
    null : Convert.ToInt32(TextBox1.Text);
1 голос
/ 23 октября 2017

Когда null не разрешено вставлять в DR["CustomerID"], вы можете использовать (int?)null вместо этого следующим образом:

DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ?
(int?) null : Convert.ToInt32(TextBox1.Text);
1 голос
/ 15 июня 2011

Если вы объявите переменную Integer как int?он автоматически упаковывается компилятором C #, и вы можете присвоить этой переменной значение null.Например:

int? custID = null;

Надеюсь, это поможет

1 голос
/ 15 июня 2011
DataTable dt = new DataTable();
DataRow DR = dt.NewRow();

if (String.IsNullOrEmpty(TextBox1.Text))
    DR["CustomerID"] = DBNull.Value;
else
    DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
1 голос
/ 15 июня 2011
 if (TextBox1.Text.Trim() == String.Empty)
    {
        DR["CustomerID"] = null;
    }
    else
    {
        DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...