我有一些可以有空值的文本框。当我尝试在插入命令中插入该 textbox.text 时,它会在 sql 中显示错误。我想要文本框为空时的自动检查,它将在 sql server 2008 R2 的数据库中插入 null。我正在使用正常的插入命令,我不想使用过程(太笨拙)。请帮助我任何人。
提前致谢。
我有一些可以有空值的文本框。当我尝试在插入命令中插入该 textbox.text 时,它会在 sql 中显示错误。我想要文本框为空时的自动检查,它将在 sql server 2008 R2 的数据库中插入 null。我正在使用正常的插入命令,我不想使用过程(太笨拙)。请帮助我任何人。
提前致谢。
不太确定您的代码,但应该是这样的:
using (SqlConnection conn = new SqlConnection("ConnectionString"))
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "INSERT into yourTable(ID, Col1, Col2) VALUES (@ID, @Col1, @Col2);";
cmd.Connection = conn;
conn.Open();
cmd.Parameters.AddWithValue("@ID", yourID);
cmd.Parameters.AddWithValue("@Col1", string.IsNullOrWhiteSpace(textBox1.Text) ?
DBNull.Value: textBox1.Text);
cmd.Parameters.AddWithValue("@Col2", string.IsNullOrWhiteSpace(textBox2.Text) ?
DBNull.Value : textBox2.Text);
cmd.ExecuteNonQuery();
}
您可以使用检查空字符串string.IsNullOrWhiteSpace
,相应地传递 null 。string.IsNullOrEmpty()
如果您想将空格视为有效值,请使用。
如果您使用直接插入查询
"insert into table_name (column1,column2,column3) values("+column1value+","+column2value+","+textbox.Text.Trim()!=""?textbox.Text.Trim():DBNull.Value+")";
即使您使用参数化查询,也可以使用相同的表达式
textbox.Text.Trim()!=""?textbox.Text.Trim():DBNull.Value
尝试这样的事情:
using (SqlConnection conn = new SqlConnecction(connStr))
{
conn.Open();
string qry = "INSERT TargetTable (TargetColumn) VALUES (@TextValue)";
using (SqlCommand cmd = new SqlCommand(qry, conn))
{
cmd.Parameters.Add(new SqlParameter("@TextValue", String.IsNullOrEmptyOrWhiteSpace(textBox.Text) ? DBNull.Value : textBox.Text));
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException sex)
{
// whatever
}
}
}