gpt4 book ai didi

sql - “Syntax error in INSERT INTO statement”错误-什么是错误?

转载 作者:行者123 更新时间:2023-12-03 08:13:39 25 4
gpt4 key购买 nike

我不确定此错误可能来自何处。

我正在使用VB.NET将数据插入MS Access2016。我能够执行其他SQL查询没有问题,但是此返回Syntax error in INSERT INTO statement错误:

sql = "INSERT INTO Sense_Translation (SenseFK, LanguageCode, Translation) VALUES (?, ?, ?)"

cmd = New OleDbCommand(sql, myConnection)
cmd.Parameters.Add(New OleDbParameter("SenseFK", senseID))
cmd.Parameters.Add(New OleDbParameter("LanguageCode", lcodeID))
cmd.Parameters.Add(New OleDbParameter("Translation", tr.Translation))

Try
cmd.ExecuteNonQuery()
cmd.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try

我已经检查并再次检查了Access和VB.NET中的表名是否匹配,参数是否匹配以及参数在SQL语句和 Parameters.Add语句中是否与Access表相对应的顺序正确(我什至不确定后者是否重要,我只是为了以防万一。)

我还检查了传递给参数的类型是否匹配- senseID是一个数字, lcodeID是一个数字, tr.Translation是一个与表匹配的字符串。尽管如果这是类型不匹配,我还是希望错误会有所不同。

为了进行比较,当我执行下面的代码时, 不是返回错误:
sql = "INSERT INTO Sense (EntryFK, SenseInformation) VALUES (?, ?)"
cmd = New OleDbCommand(sql, myConnection)

cmd.Parameters.Add(New OleDbParameter("EntryFK", entryID))
cmd.Parameters.Add(New OleDbParameter("SenseInformation", ss.SenseInformation))

Try
cmd.ExecuteNonQuery()
cmd.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try

据我所知,这两个SQL语句之间没有区别,只是参数的数量无关紧要。

我在这里错过了一些自欺欺人的事情,还是这个问题可能更加阴险?

最佳答案

Translation是一个SQL保留字,如here所示。因此,您需要将其括起来:

sql = "INSERT INTO Sense_Translation (SenseFK, LanguageCode, [Translation]) VALUES (?, ?, ?)"

最好将所有名称括起来,以免意外使用保留字
sql = "INSERT INTO [Sense_Translation] ([SenseFK], [LanguageCode], [Translation]) VALUES (?, ?, ?)"

关于sql - “Syntax error in INSERT INTO statement”错误-什么是错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59157108/

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