2015-09-05 48 views
0
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訪問中的alter table的代碼,它會在表級驗證表達式中引發錯誤語法錯誤。此代碼可以正常工作,無需添加'DEFAULT 0 」。我正在使用MS ACCESS 2007.嘗試使用this,但我不能設置使用工具。MS ACCESS中的表級驗證表達式中的語法錯誤

回答

0

您的代碼工作對我來說,如果我使用下面的連接字符串:

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; 
} 

有老司機,特別是在需要您指示在駕駛員需要的SQL支持ODBC運行的。 Odbc連接字符串中的這種設置示例爲ExtendedAnsiSQL=1

如果您的安裝程序沒有支持Access 2007的Microsoft Access數據庫引擎2010,則可以從Microsoft Download下載並安裝可再發行組件。

+0

我的連接字符串String connParam = @「Provider = Microsoft.Jet.OLEDB.4.0; Data Source =」+ dbPath +「; Persist Security Info = False」; –

+0

將供應商更改爲較新的驅動程序(如果您尚未安裝,請先下載並安裝) – rene

+0

如何檢查供應商是否安裝正確。我正在使用Office 2013,已卸載2010年。我已經使用了您的確切連接字符串,無法執行查詢。 – htm11h

0

這個答案不涉及具體問題,但它不會完全回答我收到此確切的錯誤並修復張貼在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"; 

刪除從查詢語句中星號包圍了分號。這爲我解決了這個問題。