我有一个带有Integer DataType的One ColumnName“CustomerID”的数据表。 动态地我想向DataTable添加行。为此,我创建了一个DataRow对象,如:
DataTable dt = new DataTable();
DataRow DR = dt.NewRow();
DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
但是如果TextBox包含空字符串,则会抛出错误。在这种情况下,我想将Null值分配给CustomerID。怎么做?
答案 0 :(得分:27)
null / empty字符串的格式错误;您需要检测该场景并进行补偿:
DR["CustomerID"] = string.IsNullOrWhiteSpace(text)
? DBNull.Value : (object)Convert.ToInt32(text);
答案 1 :(得分: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;
}
答案 2 :(得分:2)
DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ?
null : Convert.ToInt32(TextBox1.Text);
答案 3 :(得分:2)
首先,当然,该字段需要在DB中设置为可空。
然后,将其设置为DBNull.Value
答案 4 :(得分:2)
您需要先检查
if (TextBox1.Text.Length > 0)
{
DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); ;
}
else
{
DR["CustomerID"] = null;
}
答案 5 :(得分:2)
Int32 Temp = 0;
if !(Int32.TryParse(TextBox1.Text,Temp))
DR["CustomerID"] = DBNull.Value
else
DR["CustomerID"] = Temp
答案 6 :(得分:1)
您可以使用DBNull。
DR["CustomerID"] = (TextBox.Text.Length == 0) ? Convert.ToInt32(TextBox1.Text) : DBNull.Value;
答案 7 :(得分:1)
if (TextBox1.Text.Trim() == String.Empty)
{
DR["CustomerID"] = null;
}
else
{
DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
}
答案 8 :(得分: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);
答案 9 :(得分:1)
如果将Integer变量声明为int?它由C#编译器自动装箱,您可以为该变量赋值null。例如:
int? custID = null;
我希望有帮助
答案 10 :(得分:1)
如果不允许null
插入DR["CustomerID"]
,您可以使用(int?)null
代替:{/ p>
DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ?
(int?) null : Convert.ToInt32(TextBox1.Text);