我确定我做了一些愚蠢的事情,但我似乎可以解决这个插入查询的问题。我有一些SQL Server的经验,但不幸的是我被迫使用Access这个项目(我是新手)。此时我尝试手动插入Access(工作),然后将确切的查询复制到Visual Studio中,我仍然收到插入语法错误。我能够在同一个测试程序中插入其他表,但是我无法使这个查询起作用。
我要插入的表格设置为:
ID - Int Primary Key
time_series_id Int
open decimal
high decimal
low decimal
close decimal
volume int
observation_date Date/Time
我尝试的手动查询是:
queryString = "INSERT INTO daily_prices (time_series_id, open, high, low, close, volume, observation_date) VALUES(13, 3036.75, 3045.72, 3023.27, 3027.52, 4894428992, '2013-09-24')";
command = new OleDbCommand(queryString, conn);
command.ExecuteNonQuery();
查询最初也是按以下方式制定的:
queryString = String.Format(@"INSERT INTO daily_prices (time_series_id, open, high, low, close, volume, observation_date) VALUES ({0}, {1} ,{2} ,{3} ,{4} ,{5} ,'{6}')", newId, open, high, low, close, volume, date);
这里有任何帮助。我确定这是一个愚蠢的错误,但我有点失落,因为我能够在访问中执行查询,然后在C#中同样的查询失败。
答案 0 :(得分:1)
单词OPEN和CLOSE是Jet-SQL(Jet 4.0)的保留关键字。在它们周围使用方括号(或尽可能更改列名)
queryString = "INSERT INTO daily_prices (time_series_id, [open], high, low, " +
"[close], volume, observation_date) VALUES " +
"(13, 3036.75, 3045.72, 3023.27, 3027.52, 4894428992, '2013-09-24')";