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