vb.net-2010 - 如何修复 UPDATE 语句中的语法错误
问题描述
我一直在为某些付款创建数据库,但我的代码似乎有错误,我看不出问题出在哪里。我不断收到 OleDbExecution 中的“UPDATE 语句中的语法错误”错误未处理。有人可以帮忙吗?
这是我的代码:
Dim cnnOLEDB As New OleDbConnection
Dim cmdUpdate As New OleDbCommand
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\UBSOMSPayments.accdb")
If TextBox1.Text <> "" Then
cmdUpdate.CommandText = "UPDATE Payments SET Position='" & TextBox2.Text & "'," & "PaymentRecipient='" & TextBox3.Text & "'," & "PaymentFor='" & TextBox4.Text & "'," & "Amount='" & TextBox5.Text & "'," & "PayedAmount='" & TextBox6.Text & "'" & " WHERE AssignedOfficer = " & Val(TextBox1.Text)
'1MsgBox(cmdUpdate.CommandText)
cmdUpdate.CommandType = CommandType.Text
cmdUpdate.Connection = conn
conn.Open()
cmdUpdate.ExecuteNonQuery() <--- Line where the error shows
conn.Close()
MsgBox("Record has been updated.")
Else
MsgBox("try again")
End If
cmdUpdate.Dispose()
解决方案
您永远不应该使用字符串连接来构建 SQL 命令,而始终使用参数化查询来避免 SQL 注入。
尝试这个:
将您的查询更改为以下内容:
"UPDATE [Payments] SET [Position] = ?, [PaymentRecipient] = ?, [PaymentFor] = ?, " & _
"[Amount] = ?, [PayedAmount] = ? & _
" WHERE [AssignedOfficer] = ?"
然后添加参数:
cmdUpdate.Parameters.AddWithValue("@p1", TextBox2.Text)
cmdUpdate.Parameters.AddWithValue("@p2", TextBox3.Text)
cmdUpdate.Parameters.AddWithValue("@p3", TextBox4.Text)
cmdUpdate.Parameters.AddWithValue("@p4", TextBox5.Text)
cmdUpdate.Parameters.AddWithValue("@p5", TextBox6.Text)
cmdUpdate.Parameters.AddWithValue("@p6", TextBox1.Text)
cmdUpdate.ExecuteNonQuery()
推荐阅读
- python - 如果在 xml 中找不到 xml 部分,有没有办法停止打印“无”
- php - PHP Leveral Applications InvalidArgumentException
- go - json.Encoder 中的这个日期输出来自哪里?
- angular - 角度 8 中的函数 take() 是否有替代方法?
- c# - 使用 CellPainting 显示 datagridview 值 0 和 null 的问题
- php - 将值作为对象从函数传递到控制器时出错
- swift - 如何在 MapKit 中使用通用 Apple 地图图钉来定位位置,而不必使用我自己的图像作为图钉?
- javascript - 什么是 done(),它记录在哪里?
- c# - Unity 在另一个脚本/场景中更改对象的文本
- laravel - 如何删除注册和登录表单路由并保留其他所有内容?