我有一个创建Access MDB文件的C#程序。表和列的名称是固定的,我没有机会更改它们。不幸的是,其中一列被命名为“Group”。
我写的代码如下:
string indexSQL = buildIndexString(table.TableName);
//indexSQL = "CREATE INDEX comp ON ExpFactMap([Group]);"
new OleDbCommand(indexSQL, conn).ExecuteNonQuery();
执行ExecuteNonQuery()时,出现语法错误。如果我使用除“Group”之外的任何列,则代码可以正常工作。问题似乎是它将Group解释为关键字而不是列名。
有谁知道如何解决这个问题?在理想的世界中,我会更改列的名称,但不幸的是,这不可能。
答案 0 :(得分:0)
Group不是您尝试在DDL语句中用作对象名称的唯一保留字:
//indexSQL = "CREATE INDEX comp ON ExpFactMap([Group]);"
不幸的是,“comp”也是一个保留字。请参阅Problem names and reserved words in Access。
在CREATE INDEX
声明中为保留字括起来:
CREATE INDEX [comp] ON ExpFactMap([Group]);