MS ACCESS 中的表级验证表达式中的语法错误
Posted
技术标签:
【中文标题】MS ACCESS 中的表级验证表达式中的语法错误【英文标题】:Syntax error in table-level validation expression in MS ACCESS 【发布时间】:2015-09-05 05:05:20 【问题描述】:OleDbCommand oleDbCmd = new OleDbCommand();
OleDbConnection bookConn = Sqlhelper.Conncect_Mdb();
oleDbCmd.Connection = bookConn;
oleDbCmd.CommandText = "ALTER TABLE doc_comp ADD COLUMN versioncode NUMBER DEFAULT 0";
oleDbCmd.ExecuteNonQuery();
bookConn.Close();
这是我在 ms 访问中更改表的代码,它在表级验证表达式中抛出错误语法错误。此代码在不添加“DEFAULT 0”的情况下工作正常。我正在使用 MS ACCESS 2007。尝试使用 this,但我无法使用工具进行设置。
【问题讨论】:
【参考方案1】:如果我使用以下连接字符串,您的代码对我有效:
static public OleDbConnection Conncect_Mdb()
const string oledb = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=scratch.accdb";
var conn = new OleDbConnection(oledb);
conn.Open();
return conn;
有一些较旧的驱动程序,特别是那些通过 ODBC 运行的驱动程序,它们要求您在驱动程序中指明您需要哪些 sql 支持。在 Odbc 连接字符串中进行此类设置的示例是 ExtendedAnsiSQL=1
。
如果您的设置没有同样支持 Access 2007 的 Microsoft Access Database Engine 2010,您可以从 Microsoft Download 下载并安装可再发行组件。
【讨论】:
我的连接字符串 String connParam = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + ";Persist Security Info=False" ; 将提供程序更改为较新的驱动程序(如果您还没有,请先下载并安装) 如何检查提供程序是否已正确安装。我使用的是 Office 2013,卸载了 2010。我使用了您的确切连接字符串,无法执行查询。 @htm11h 您可以通过在 HKEY_CLASSES_ROOT 下找到Microsoft.ACE.OLEDB
来检查注册表。如果您正在构建 x64,则可以尝试使用 AnyCPU,以防您只安装了 32 位驱动程序【参考方案2】:
此答案与特定问题无关,但它确实回答了 TITLE 中发布的错误消息......
Syntax error in table-level validation expression in MS ACCESS
我收到了这个确切的错误,解决方法是从查询语句的末尾删除一个分号。
我正在使用 OP 的查询来提出解决方案...
oleDbCmd.CommandText = "ALTER TABLE doc_comp ADD COLUMN versioncode NUMBER DEFAULT 0**;**";
应该是,
oleDbCmd.CommandText = "ALTER TABLE doc_comp ADD COLUMN versioncode NUMBER DEFAULT 0";
从查询语句中删除被星号包围的分号。这为我解决了这个确切的错误。
【讨论】:
以上是关于MS ACCESS 中的表级验证表达式中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章