![](/img/trans.png)
[英]How to edit/update records from the database using textbox by linq to 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
子句的布爾邏輯使用AND
或OR
語法,如下所示:
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.