簡體   English   中英

如果未鍵入int類型數據,SQL插入命令將顯示錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM