gpt4 book ai didi

mysql - SQL UPDATE 语句中的语法错误,但似乎一切正常 :(

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:00 26 4
gpt4 key购买 nike

我在数据库中的一个表中遇到此错误:

(System.Data.dll 中发生类型System.Data.OleDb.OleDbException 的异常,但未在用户代码中处理

附加信息:UPDATE 语句中的语法错误。)

它允许我从中读取,但是当我使用 SQL 查询添加新记录或更新它时,它给了我这个错误,我已经检查、双重检查和三次检查,但看不出有什么问题...奇怪的是我从另一个我知道正在工作的表中获取它并确保我更改了所有变量但无济于事!

如果你们都认为这是非常肮脏的代码,我深表歉意,这是我第一年的项目,我仍在思考如何更快地做事!

如果有人能看一看,看看他们是否能弄明白,我们将不胜感激!

Sub Update()

Dim cs As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("mydatabasename") + ";"
Dim cn As New OleDbConnection(cs)
Dim cmd As OleDbCommand
Dim r As OleDbDataReader
Dim ite As String
Dim siz As String
Dim quantit As String
Dim pric As String
Dim sourc As String
Dim updatestockstrings As String
updatestockstrings = Request.QueryString("updatestock")
ite = itm.Value
siz = sze.Value
quantit = qty.Value
pric = prc.Value
sourc = imgsrc.Value
If ite = "" Then
parMsg.InnerHtml = "Please add an item name"
ElseIf siz = "" Then
parMsg.InnerHtml = "Please add a size"
ElseIf quantit = "" Then
parMsg.InnerHtml = "Please add a quantity"
ElseIf pric = "" Then
parMsg.InnerHtml = "Please state a price"
ElseIf sourc = "" Then
parMsg.InnerHtml = "Please add an image source"
Else
cmd = New OleDbCommand("UPDATE Stocks Set Item='" & ite & "', Size='" & siz & "', Quantity='" & quantit & "', Price='" & pric & "', ImageSource='" & sourc & "' WHERE StockID=" & updatestockstrings & ";", cn)
cn.Open()
r = cmd.ExecuteReader()
Do While r.Read()
Loop
cn.Close()
parMsg.InnerHtml = "Update Successful!"
End If
End Sub

最佳答案

SIZE是MS-Access的保留字,需要用方括号括起来

[SIZE]=......

但我真的建议使用参数化查询来保护自己免受 SQL 注入(inject)和解析问题(如果一个或多个输入字符串包含单引号会怎样?)

 cmd = New OleDbCommand("UPDATE Stocks Set Item=?, [Size]=?, Quantity=?, " & _
"Price=?, ImageSource=? WHERE StockID=?", cn)
cmd.Parameters.AddWithValue("@p1", item)
cmd.Parameters.AddWithValue("@p2", siz)
cmd.Parameters.AddWithValue("@p3", quantit )
cmd.Parameters.AddWithValue("@p4", pric)
cmd.Parameters.AddWithValue("@p5", sourc)
cmd.Parameters.AddWithValue("@p6", updatestockstrings)

但这还不够。您应该为基础数据库字段传递具有正确数据类型的参数。因此,例如,如果数据库字段 Price 是十进制列,那么您需要将 pric 变量转换为十进制值(这需要您将其解析为确保您收到了有效的十进制值)

关于mysql - SQL UPDATE 语句中的语法错误,但似乎一切正常 :(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com