2012-10-27 54 views
1

我有一個與Access數據庫交互的C#應用​​程序。
當我執行一個OleDbCommand對象ALTER一張桌子和ADD一個新的專欄中,我收到一個錯誤:oledb異常:數據庫引擎無法鎖定表

OleDbException: The database engine could not lock table because it is already in use by another person or process.

雖然我可以成功地操縱我的數據。但是,當我直接在MS Access中執行查詢時,它可以正常工作。

注意:我的數據庫已關閉,沒有人或進程正在使用它。

我該如何解決這個問題?

+1

告訴我們你的代碼 –

回答

0

具有以下附加屬性

db.Properties("Jet OLEDB:Connection Control") = 1 

總之一起嘗試了這一點

使用下面的連接字符串

db.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\<Your database name>;Persist Security Info=False;")

,你需要以獨佔模式打開數據庫,以使一個alter table查詢。 或者你也可以設置以下列方式這個屬性在C#

​​

我沒有測試的代碼雖然,但它應該爲你工作。

+0

什麼是db和CN?我的連接字符串是:'「Provider = Microsoft.ACE.OLEDB.12.0; Data Source = <我的數據庫路徑>; Persist Security Info = False;」' – Hamid62

+0

Jet連接適用於早期版本的Access,並且不適用於2007向前。 Ace連接向後兼容。 – Fionnuala

+0

您不需要獨佔模式來更改表格,您只需要在MS Access中工作時不使用表格,並且我相當確定C#中的情況也是如此。我懷疑表格可能會在代碼中的其他地方打開。 – Fionnuala