[英]SQL insert command shows error if int type data is not typed
我正在使用本地數據庫,並且已經編寫了一個插入命令以將值添加到數據庫中。 問題是我有一些int類型,我將其作為“ + textBox1.text”獲得,而沒有'',因為只有數字。
但是,如果我這樣離開,並且沒有在此文本框中鍵入值,則查詢是錯誤的,並且由於一些逗號而顯示錯誤。 然后,如果我將它們的類型更改為nvarchar
,並按照'“ + textBox.Text”'進行獲取,則不會插入任何內容。 那么如何將它們保持為int
並正確插入呢? 謝謝 !
cmd.CommandText = "INSERT INTO info(Nume, Prenume, Data, Proiect, Schimburi, Poza, Acord, Baza)
VALUES('" + numeTextBox.Text.Trim() +
"', '" + prenumeTextBox.Text.Trim() + "', '" +
dateTimePicker1.Value.ToShortDateString() + "', '" + textBox1.Text.Trim()
+ "', " + label5.Text + " , @Poza, " + textBox2.Text + ", " + textBox3.Text + ");";
您需要為命令使用命名參數以自動檢測數據類型:
cmd.CommandText = "INSERT INTO info(Nume, Prenume, Data, Proiect, Schimburi, Poza, Acord, Baza)
VALUES(@nume, @prenume, @data, @pro, @sch, @Poza, @aco, @schi);";
cmd.Parameters.AddWithValue("@nume", numeTextBox.Text.Trim());
cmd.Parameters.AddWithValue("@prenume", prenumeTextBox.Text.Trim());
cmd.Parameters.AddWithValue("@data", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@pro", textBox1.Text.Trim());
cmd.Parameters.AddWithValue("@sch", label5.Text);
cmd.Parameters.AddWithValue("@aco", textBox2.Text);
cmd.Parameters.AddWithValue("@schi", textBox3.Text);
您還可以通過以這種方式執行每個參數來指定sql數據類型
cmd.Parameters.Add("@schi", tSqlDbType.Varchar);
cmd.Parameters["@schi"].Value = textBox3.Text;
您可以嘗試刪除以下內容中的單引號:
...oShortDateString() + "', '" + textBox1.Text.Trim() + "', " + label5.T...
將其轉換為:
...oShortDateString() + "', " + textBox1.Text.Trim() + ", " + label5.T...
對於每個int textBox
您應該避免在sql查詢中將值串聯為字符串以防止可能的Sql Injection攻擊,請使用SqlParameter的AddWithValue方法。 請參閱此MSDN文章。
如果要從文本字段讀取整數值,則可以使用以下方法將這些值轉換為int:
Convert.ToInt32(numeTextBox.Text.Trim())
但是要小心添加客戶端和服務器端驗證,以驗證用戶的輸入。
您的代碼可能如下所示:
cmd.CommandText = "INSERT INTO info(Nume, Prenume, Data, Proiect, Schimburi, Poza, Acord, Baza)
VALUES (@Nume, @Prenume, @Data, @Proiect, @Schimburi, @Poza, @Acord,@Baza)"
cmd.Parameters.AddWithValue("@Nume", numeTextBox.Text.Trim());
cmd.Parameters.AddWithValue("@Prenume", prenumeTextBox.Text.Trim());
cmd.Parameters.AddWithValue("@Data", dateTimePicker1.Value);
// And so on...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.