2011-06-15 2 views
18

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

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

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

+0

@Marc почему не вы Порекомендовать ему что-то вместо использования DataTable? – mqpasta

+1

@Marc: Да. Iam с использованием DataTable. – thevan

ответ

25

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

DR["CustomerID"] = string.IsNullOrWhiteSpace(text) 
     ? DBNull.Value : (object)Convert.ToInt32(text); 
4
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; 
} 
1

Вы можете использовать DBNull.

DR["CustomerID"] = (TextBox.Text.Length == 0) ? Convert.ToInt32(TextBox1.Text) : DBNull.Value; 
1
if (TextBox1.Text.Trim() == String.Empty) 
    { 
     DR["CustomerID"] = null; 
    } 
    else 
    { 
     DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); 
    } 
2

вы могли бы сделать это так:

DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ? 
    null : Convert.ToInt32(TextBox1.Text); 
2

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

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

1
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

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

int? custID = null; 

Я надеюсь, что помогает

2

Вы должны проверить первый

if (TextBox1.Text.Length > 0) 
{ 
    DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); ; 
} 
else 
{ 
    DR["CustomerID"] = null; 
} 
2
Int32 Temp = 0; 
if !(Int32.TryParse(TextBox1.Text,Temp)) 
    DR["CustomerID"] = DBNull.Value 
else 
    DR["CustomerID"] = Temp 
1

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

DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ? 
(int?) null : Convert.ToInt32(TextBox1.Text); 
Смежные вопросы