将Null值分配给DataTable中的Integer列

我有一个带有Integer DataType的One ColumnName“CustomerID”的数据表。 动态地我想向DataTable添加行。 为此,我创建了一个DataRow对象,如:

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

但是如果TextBox包含空字符串,则会抛出错误。 在这种情况下,我想将Null值分配给CustomerID。 这该怎么做?

null / empty字符串的格式错误; 你需要检测那个场景并补偿:

  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); 

首先,当然,该字段需要在DB中设置为可空。

然后,将其设置为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? 它由C#编译器自动装箱,您可以为该变量赋值null。 例如:

 int? custID = null; 

我希望有所帮助

当不允许将null插入DR["CustomerID"] ,您可以使用(int?)null如下所示:

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