VB.NET 访问 SQL 语法错误
VB.NET Access SQL syntax error
我正在尝试使用 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.
谢谢。
如评论所述,object 和 action 是保留字,因此您必须将这些名称括起来:[object]、[action] 等。
有关保留字的完整列表,请参阅 Access 2007 reserved words and symbols。
我经常看到的一些常见的保留字导致问题:
- 动作
- 日期
- 对象
- 密码
- 用户
通常最好避免使用这些词作为数据库字段的名称。
我正在尝试使用 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.
谢谢。
如评论所述,object 和 action 是保留字,因此您必须将这些名称括起来:[object]、[action] 等。
有关保留字的完整列表,请参阅 Access 2007 reserved words and symbols。
我经常看到的一些常见的保留字导致问题:
- 动作
- 日期
- 对象
- 密码
- 用户
通常最好避免使用这些词作为数据库字段的名称。