[英]I keep getting this error when trying to create a tabe in Access through vb.net using SQL: OleDbExcetion was unhandled
[英]Trying to update record, keep getting this error vb.net
我確定這個問題對您來說很容易... :)我只是在嘗試使用以下方法更新數據庫中的現有記錄:
Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
If Not cnn.State = ConnectionState.Open Then
cnn.Open()
End If
cmd2.Connection = cnn
cmd2.CommandText = "UPDATE HireItemRecord SET HireItemBeginDate = " & TextBox45.Text & _
" ,HireItemEndDate = " & TextBox44.Text & _
" ,HireItemCost = " & TextBox16.Text & _
" ,PaymentMethod = " & TextBox17.Text & _
" ,Staff_Id = " & TextBox19.Text & _
" ,HireItemNotes = " & TextBox18.Text & _
" ,HireItemReturnDate = " & TextBox43.Text & _
"WHERE HireRecord_Id = " & TextBox13.Text
cmd2.ExecuteNonQuery()
ds1.Clear()
daHireItemRecord.Fill(ds1, "PersonDetails")
cnn.Close()
End Sub
但是,無論選擇什么記錄以及框中的任何詳細信息,我都會一遍又一遍地收到相同的錯誤:SqlException未處理未正確的語法'12'附近。
當文本框中絕對沒有任何內容時,錯誤將更改為:','附近的語法不正確。
我對此很陌生,我似乎無法理解為什么會這樣。 非常感謝您的幫助。 :)
這太不對了。
i
, x
或tbl
用作變量名,但通常它們應具有描述性。
#2的示例,其中將“'1/1/1999'WHERE 1 = 1-”放入TextBox45:
`UPDATE HireItemRecord SET HireItemBeginDate = '1/1/1999' WHERE 1=1 -- , HireItemEndDate...`
--
之后的所有內容都會變成評論,因此您得到了以下信息:
`UPDATE HireItemRecord SET HireItemBeginDate = '1/1/1999' WHERE 1=1`
您能想象如果執行該查詢會發生什么? 沒什么好的。
您應該按照此問題中的建議使用參數化查詢: 避免從C#代碼在MSSQL Server上注入SQL的算法?
您永遠不應使用字符串連接來構建SQL。 它使您容易受到SQL注入攻擊的影響。 嘗試使用.Net中提供的SQLCommand對象 。 這使您可以“參數化”查詢,而不必擔心在何處放置“和”。
它還將允許您自然地添加參數,而不必將其轉換為字符串。 像這樣:
Dim command As New SqlCommand("SELECT * FROM Table", connection)
command.Parameters.Add("@ID", SqlDbType.Int)
command.Parameters("@ID").Value = customerID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.