簡體   English   中英

使用文本框和DropdownList更新SQL數據庫中的數據

[英]Using a Textbox and DropdownList to update data in an SQL database

請幫忙,

ASPX Form背后的VB.Net代碼。 我有一個具有PartSN和Model字段的SQL表。 PartSN可以在表中存儲兩個條目。 我想做的是讓代碼在textbox1中輸入時選擇PartSN,並且僅當PartSN與下拉列表文本匹配時才用True更新。

我在這里的更新代碼中遇到錯誤: where "('" &** TextBox1.Text & "' =PartSN") , ('" & Dropdownlist1.Text & "' =Model")"

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE '" _
     & TextBox1.Text & "' =(PartSN)"

cmd.CommandText = "Update Table_Data SET TestComplete = @TestComplete where "('" _
  & TextBox1.Text & "' =PartSN") , ('" & Dropdownlist1.Text & "' =Model")"

cmd.CommandType = CommandType.Text

With cmd.Parameters
    .AddWithValue("@TestComplete", "True")

在SELECT語句的WHERE子句中,您已經倒向了,正在這樣做:

SELECT PartSN FROM Table_data
WHERE 'ABC' = (PartSN)

那是無效的SQL,您需要將等號表達式的左側的字段名放在下面,如下所示:

SELECT PartSN FROM Table_data
WHERE PartSN = 'ABC'

現在,您的代碼應如下所示:

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE PartSN = '" _
    & TextBox1.Text & "'"

注意:您的代碼容易受到SQL Injection攻擊,因為WHERE子句使用的是文本框Text屬性中未經檢查的值。 換句話說,用戶可以在頁面的文本框中輸入惡意數據庫命令,然后針對數據庫執行該命令,例如';DROP TABLE users;--或類似的東西。

使用參數化的SQL,如下所示:

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE PartSN = @PartSN"
cmd.Parameters.Add("@PartSN", SqlDbTypes.VarChar, 50).Value = TextBox1.Text

注意:您需要將@PartSN字段的長度從50更改為數據庫中的任何長度。

更新:

您在SELECT語句的WHERE子句中對AND准則使用了不正確的語法。

您正在執行以下操作:

SELECT PartSN FROM Table_data
WHERE (PartSN = 'ABC'), (Model = 'ABC')

WHERE子句的布爾邏輯使用ANDOR語法,如下所示:

SELECT PartSN FROM Table_data
WHERE PartSN = 'ABC' AND Model = 'ABC'

因此,要使用上面的參數化SQL解決方案,請執行以下操作:

cmd.CommandText = "SELECT PartSN FROM Table_Data WHERE PartSN = @PartSN AND Model = @PartSN"
cmd.Parameters.Add("@PartSN", SqlDbTypes.VarChar, 50).Value = TextBox1.Text

注意:您可能需要考慮將參數更改為比@PartSN更好的名稱,因為它被用於與PartSN列和Model列進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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