VB.NET Access SQL语法错误

时间:2015-03-03 22:46:14

标签: vb.net ms-access

我正在尝试使用VB.NET对访问数据库执行INSERT查询,并且它一直抱怨我有语法错误。我似乎无法弄明白。如果我在Access中运行它,它就可以工作。

为了让您了解正在发生的事情,这里有一些调试代码:

Dim params(6) As OleDb.OleDbParameter
    params(0) = New OleDb.OleDbParameter("@matchNumber", Integer.Parse(recMatchNumber))
    params(1) = New OleDb.OleDbParameter("@teamNumber", Integer.Parse(recTeamNumber))
    params(2) = New OleDb.OleDbParameter("@action", recAction)
    params(3) = New OleDb.OleDbParameter("@object", recObject)
    params(4) = New OleDb.OleDbParameter("@level", recLevel)
    params(5) = New OleDb.OleDbParameter("@location", recLocation)
    params(6) = New OleDb.OleDbParameter("@time", recTime)

For Each param As OleDb.OleDbParameter In params
        Console.WriteLine(command.CommandText)
        Console.WriteLine(param.ParameterName)
        Console.WriteLine(param.Value)
        command.Parameters.Add(param)
Next

结果如下:

INSERT INTO matchData( matchNumber, teamNumber, action, object, [level], location, [time]) VALUES(@matchNumber,@teamNumber,@action,@object,@level,@location,@time)
@matchNumber
1
INSERT INTO matchData( matchNumber, teamNumber, action, object, [level], location, [time]) VALUES(@matchNumber,@teamNumber,@action,@object,@level,@location,@time)
@teamNumber
50
INSERT INTO matchData( matchNumber, teamNumber, action, object, [level], location, [time]) VALUES(@matchNumber,@teamNumber,@action,@object,@level,@location,@time)
@action
Move
INSERT INTO matchData( matchNumber, teamNumber, action, object, [level], location, [time]) VALUES(@matchNumber,@teamNumber,@action,@object,@level,@location,@time)
@object
Robot
INSERT INTO matchData( matchNumber, teamNumber, action, object, [level], location, [time]) VALUES(@matchNumber,@teamNumber,@action,@object,@level,@location,@time)
@level
0
INSERT INTO matchData( matchNumber, teamNumber, action, object, [level], location, [time]) VALUES(@matchNumber,@teamNumber,@action,@object,@level,@location,@time)
@location
Zone
INSERT INTO matchData( matchNumber, teamNumber, action, object, [level], location, [time]) VALUES(@matchNumber,@teamNumber,@action,@object,@level,@location,@time)
@time
Auto

错误为Syntax error in INSERT INTO statement.

感谢。

1 个答案:

答案 0 :(得分:2)

正如评论的那样,对象和动作是保留字,所以你必须在这些名称周围放置括号:[object],[action]等。

有关保留字的完整列表,请参阅Access 2007 reserved words and symbols

我常常看到一些常见的保留词导致问题:

  • 动作
  • 日期
  • 物体
  • 密码
  • 用户

通常最好避免将这些单词用作数据库字段的名称。