2009-10-25 46 views
0

我發現this page建議在我的連接字符串中添加「Jet OLEDB:System Database」項目,然後向Open提供用戶名和密碼參數。 Unfortuanately,似乎.NET的OleDb類似乎沒有這個...我嘗試下面的代碼只是櫃面:如何通過Jet訪問由Access工作組中的用戶名/密碼保護的Access數據庫?

testConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile + 
    ";Jet OLEDB:System Database=" + Path.GetDirectoryName(mdbFile) + "\\system.mdw;" + 
    "Jet OLEDB:System Username=***;Jet OLEDB:System Password=***"); 

但這似乎只是扔之前掛了很長時間「無法找到可安裝的ISAM「DbException

有沒有人有任何想法?

編輯:我試着用下面的連接字符串,它停止了異常,但沒有讓我訪問任何表,就像我打開Access時沒有正確的工作組設置。

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile + 
";Jet OLEDB:System Database=" + Path.GetDirectoryName(mdbFile) + "\\system.mdw;" + 
"User ID=***;Password=***"; 
+0

看看各種不同的連接字符串的變化在http://www.connectionstrings.com用於連接到訪問看看是否有這些工作。 – adrianbanks 2009-10-26 00:00:39

+0

列表中的第四個:http://www.connectionstrings.com/access是我已經使用的一個,它不起作用。 – 2009-10-26 00:11:15

+0

好吧,是的,它工作。看起來像是我的SQL需要工作......問題是爲什麼,因爲查詢直接在Access中工作...... – 2009-10-26 00:16:04

回答

0

我覺得現在是個白癡,卻意外地向上滾動該頁面上的一點,我注意到一些連接字符串中有一個「用戶名」和「密碼」參數。更改連接字符串以使用它們而不是嘗試將它們傳遞給「Jet OLEDB:*」修復了問題。

即,我最終的連接字符串是:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile + 
";Jet OLEDB:System Database=" + Path.GetDirectoryName(mdbFile) + "\\system.mdw;" + 
"User ID=***;Password=***"; 
相關問題