Ответ 1
Нулевая/пустая строка находится в неправильном формате; вам нужно будет обнаружить этот сценарий и компенсировать:
DR["CustomerID"] = string.IsNullOrWhiteSpace(text)
? DBNull.Value : (object)Convert.ToInt32(text);
У меня есть datatable с One ColumnName "CustomerID" с Integer DataType. Динамически я хочу добавить строки в DataTable. Для этого я создал один объект DataRow, например:
DataTable dt = new DataTable();
DataRow DR = dt.NewRow();
DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
Но если TextBox содержит пустую строку, она выдает ошибку. В этом случае я хочу присвоить значение Null идентификатору CustomerID. Как это сделать?
Нулевая/пустая строка находится в неправильном формате; вам нужно будет обнаружить этот сценарий и компенсировать:
DR["CustomerID"] = string.IsNullOrWhiteSpace(text)
? DBNull.Value : (object)Convert.ToInt32(text);
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;
}
вы можете сделать это следующим образом:
DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ?
null : Convert.ToInt32(TextBox1.Text);
Прежде всего, конечно, поле должно быть установлено как NULL в базе данных.
И затем установите для него значение DBNull.Value
Вы должны проверить сначала
if (TextBox1.Text.Length > 0)
{
DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
}
else
{
DR["CustomerID"] = null;
}
Int32 Temp = 0;
if !(Int32.TryParse(TextBox1.Text,Temp))
DR["CustomerID"] = DBNull.Value
else
DR["CustomerID"] = Temp
Вы можете использовать DBNull.
DR["CustomerID"] = (TextBox.Text.Length == 0) ? Convert.ToInt32(TextBox1.Text) : DBNull.Value;
if (TextBox1.Text.Trim() == String.Empty)
{
DR["CustomerID"] = null;
}
else
{
DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
}
DataTable dt = new DataTable();
DataRow DR = dt.NewRow();
if (String.IsNullOrEmpty(TextBox1.Text))
DR["CustomerID"] = DBNull.Value;
else
DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
Если вы объявляете переменную Integer как int? он автоматически помещается в компилятор С#, и вы можете назначить значение null этой переменной. Например:
int? custID = null;
Я надеюсь, что это поможет
Если null
не может быть вставлено в DR["CustomerID"]
, вы можете использовать (int?)null
вместо этого:
DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ?
(int?) null : Convert.ToInt32(TextBox1.Text);