2

我确定我在做一些愚蠢的事情,但我似乎可以找出这个插入查询的问题。我对 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# 中相同的查询失败。

4

1 回答 1

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')";
于 2013-09-25T22:37:28.480 回答