【发布时间】:2012-07-09 17:21:39
【问题描述】:
我有一个创建 Access MDB 文件的 C# 程序。表和列的名称是固定的,我没有机会更改它们。不幸的是,其中一列被命名为“组”。
我写的代码是这样的:
string indexSQL = buildIndexString(table.TableName);
//indexSQL = "CREATE INDEX comp ON ExpFactMap([Group]);"
new OleDbCommand(indexSQL, conn).ExecuteNonQuery();
执行 ExecuteNonQuery() 时,出现语法错误。如果我使用“组”以外的任何列,则代码可以正常工作。问题似乎在于它将 Group 解释为关键字而不是列名。
有谁知道如何解决这个问题?在理想情况下,我会更改列的名称,但不幸的是,这是不可能的。
【问题讨论】:
-
究竟为什么不可能?
-
你所拥有的应该工作,你确定 indexSQL 正是“CREATE INDEX comp ON ExpFactMap([Group]);”用大括号和方括号?
-
尝试“CREATE INDEX comp ON ExpFactMap(([Group]));”
-
在您的代码中,sn-p buildIndexString 正在返回要执行的 SQL 字符串。您确定该字符串包含方括号中的列名吗?
-
查看 SQL 小提琴:sqlfiddle.com/#!3/2cf5d/1/0 这很好用,它一定是您的 c# 代码中的其他内容。