Sql &引用;INSERT INTO语句中的语法错误;错误-错误是什么?

Sql &引用;INSERT INTO语句中的语法错误;错误-错误是什么?,sql,vb.net,ms-access,syntax-error,sql-insert,Sql,Vb.net,Ms Access,Syntax Error,Sql Insert,我不确定这个错误是从哪里来的 我正在使用VB.NET将数据插入MS Access 2016。我可以执行其他SQL查询,没有问题,但是这个查询在INSERT INTO语句中返回语法错误错误: sql = "INSERT INTO Sense_Translation (SenseFK, LanguageCode, Translation) VALUES (?, ?, ?)" cmd = New OleDbCommand(sql, myConnection) cmd.Parameters.Add(N

我不确定这个错误是从哪里来的

我正在使用VB.NET将数据插入MS Access 2016。我可以执行其他SQL查询,没有问题,但是这个查询在INSERT INTO语句中返回
语法错误
错误:

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语句和
参数中的参数是否符合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语句之间除了参数的数量没有区别,这应该无关紧要


这里是否有我遗漏的一些显而易见的东西,或者问题可能更隐蔽?

翻译是一个SQL保留字。因此,您需要将其括起来:

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

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

在sql控制台中运行这两条语句。语法错误不能显示整个sql错误,但有时可能是由于sql本身而不是用高级语言编写的。始终先在sql控制台中检查查询,然后在sql情况下在高级语言级别进行检查


由于@ErikA已经发布了
翻译
是一个Sql保留关键字,因此,在Sql控制台中运行相同的Sql应该会给出确切的保留关键字错误。重命名此列或用
[Translation]

括起来您是否尝试手动运行这些语句?做一件事复制相同的语句,并在Sql First中使用手动值运行这两个语句谢谢@Erik A的回答解决了我的主要问题,但如果错误来源不明,我将在将来采取这一步骤:)