2013-05-07 87 views
0

我有一些可以有空值的文本框。當我試圖在插入命令中插入textbox.text時,它會在sql中顯示錯誤。我想要在文本框爲空時自動檢查它將在SQL Server 2008 R2中的數據庫中插入空值。我正在使用正常的插入命令,我不想使用過程(太笨拙)。 請幫助我的人。在SQL Server中插入空文本框值

在此先感謝。

+2

什麼是表結構和什麼是數據類型,並將其設爲可空字段。 – MahaSwetha 2013-05-07 05:05:35

回答

4

不能確定你的代碼,但它應該是這樣的:

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

+1

一個由空白字符組成的字符串(如一個空格),如果不是空的,但您將其視爲空白。我不知道OP是否需要這個,但這不是OP要求的,只是'string.IsNullOfEmpty'。 – hvd 2013-05-07 05:19:12

+1

@ hvd,我只能猜測OP會認爲空格是空的,但你說得對,我應該在我的答案中加上。 – Habib 2013-05-07 05:22:31

+0

是的,插入'null'預編輯不是正確的調用 - 'DBNull.Value'是關鍵。否則很明確,從一開始就有解釋性的代碼。 – J0e3gan 2013-05-07 05:22:57

1

如果您正在使用直接插入查詢

"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 
+2

本示例是SQL注入的候選人。我總是推薦使用參數,而不是通過注入用戶提供的文本直接構建sql語句。至少,您應該確保您正在轉義SQL角色。 – 2013-05-07 05:33:35

+0

對不起,你是對的。參數化查詢總是更好。不要使用直接查詢,將導致sql注入。謝謝你提醒我。 – Nemo 2013-05-07 05:45:56

0

嘗試是這樣的:

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 
     } 
    } 
}