我有一些可以有空值的文本框。當我試圖在插入命令中插入textbox.text時,它會在sql中顯示錯誤。我想要在文本框爲空時自動檢查它將在SQL Server 2008 R2中的數據庫中插入空值。我正在使用正常的插入命令,我不想使用過程(太笨拙)。 請幫助我的人。在SQL Server中插入空文本框值
在此先感謝。
我有一些可以有空值的文本框。當我試圖在插入命令中插入textbox.text時,它會在sql中顯示錯誤。我想要在文本框爲空時自動檢查它將在SQL Server 2008 R2中的數據庫中插入空值。我正在使用正常的插入命令,我不想使用過程(太笨拙)。 請幫助我的人。在SQL Server中插入空文本框值
在此先感謝。
不能確定你的代碼,但它應該是這樣的:
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
空字符串,空據此通過。如果您想將空格視爲有效值,請使用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
本示例是SQL注入的候選人。我總是推薦使用參數,而不是通過注入用戶提供的文本直接構建sql語句。至少,您應該確保您正在轉義SQL角色。 – 2013-05-07 05:33:35
對不起,你是對的。參數化查詢總是更好。不要使用直接查詢,將導致sql注入。謝謝你提醒我。 – Nemo 2013-05-07 05:45:56
嘗試是這樣的:
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
}
}
}
什麼是表結構和什麼是數據類型,並將其設爲可空字段。 – MahaSwetha 2013-05-07 05:05:35