【发布时间】:2019-12-03 12:26:07
【问题描述】:
我不确定这个错误来自哪里。
我正在使用 VB.NET 将数据插入 MS Access 2016。我能够执行其他 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 中的表名是否匹配,参数是否匹配,以及参数是否与 Access 表对应的顺序正确,无论是在 SQL 语句中还是在Parameters.Add 声明(我什至不确定后者是否重要,我只是以防万一。)
我还检查了传递给参数的类型是否匹配 - 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 vb.net ms-access syntax-error sql-insert