2012-01-02 38 views
1

我正在尋找如何使用C#訪問Paradox數據庫。並行使用Paradox數據庫與c#JET和另一個程序

的問題是,在工作站是所有準備運行的程序,其使用的目標數據庫。在運行之前,oleDbConnection.Open()會引發異常。

如果我沒有運行在從同一臺計算機,但另一個Windows工作站.NET程序,並使用共享文件夾的一切工作正常。原始程序具有讀/寫訪問權限,並且只有我需要時才具有隻讀訪問權限。當然,第二臺計算機上的NET DIR指向共享文件夾中的正確目錄。

如果我使用共享文件夾,然後運行在同一臺計算機上的兩個程序(我和原件),並配置BDE使用從C#到Paradox數據庫的共享文件夾的連接無法打開。

我試圖從.NET上運行程序管理員帳戶權限,但它沒有幫助。

所以我需要一個其他程序,Paradox數據庫編輯器,並嘗試編輯原始程序運行時的一個表。在用戶權限,它給我錯誤的訪問網絡文件夾。但是,使用管理員權限運行時,我可以成功讀取數據庫,以及僅當Paradox數據庫編輯器僅在用戶帳戶權限上運行時。

+0

IIRC你還需要一個'私人目錄',你有沒有確定不同的(副本)程序使用不同的路徑? – 2012-01-02 12:49:52

+0

我不清楚應該在哪裏定義這個'私人目錄'。在BDE管理員或OleDbConnection的連接字符串中。 – 2012-01-02 18:26:55

回答

0

聽起來好像你可能在使用Paradox鎖定機制時遇到了問題。當Paradox(你的案例中的BDE)訪問一個表時,它通過在表目錄中的特殊鎖文件中創建一個條目並在表中創建一個條目來在表上放置一種或另一種類型的鎖。這些由特定位置中的單個Paradox.net文件控制。

我覺得你說的,目前的應用程序使用BDE,您可以使用別的東西。我不確定你能做到這一點,但如果可以的話,你將不得不使用相同的鎖定文件和Paradox.net文件。此外,你將不得不使用相同的悖論版本邏輯。這個鎖定機制在幾個Paradox版本上發生了一些變化。嘗試分別運行每個程序並查看它創建的文件和位置。他們應該是相同的。

我不認爲專用目錄是如此重要。實際上,2個用戶不能擁有相同的私人目錄。

+0

亨克評論後,我挖掘谷歌,並發現了一些有趣的http://sgbd.developpez.com/PDox%20Survival%20Guide.rtf。在目錄c:\ application \我有最後2個目錄:PRIVDIR和MYDATA。 使用privdir中的原始應用程序在MYDATA Paradox.lck中使用PDOXUSRS.NET,Paradox.lck,PDOXUSRS.LCK,PDOXUSRS.LCK 使用.NET Framework進行查詢可在privdir PDOXUSRS.NET中產生MYDATA PDOXUSRS.LCK和PARADOX。 LCK。 因此,使用.NET Framework查詢不會在PRIVIR中產生Paradox.lck,PDOXUSRS.LCK。應用程序分開運行。 如何指定.NET查詢的私人目錄? – 2012-01-05 14:37:58

+0

這裏是如何設置私人目錄http://www.progware.org/Blog/post/Connecting-to-a-PARADOX-DB-with-C-%28Vista-XP%29.aspx,但也改變位置.NET文件。從以前的鏈接引用: 併發 在多用戶環境中,悖論4.0鎖定協議保持通過PDOXUSRS.NET文件併發(同時使用的應用程序)。所有想要共享Paradox表的用戶都必須使用相同的路徑映射到相同的PDOXUSRS.NET文件,但不一定使用相同的驅動器號。 – 2012-01-06 11:37:06

+0

是的,每個應用程序和每個用戶都應該使用一個Pdoxusrs.net文件。該文件控制多用戶訪問。它通過在每個被訪問的表上創建2個.lck文件來實現。但是,當用戶使用表完成時,它也會刪除這些.lck文件 - 因此您的系統上不應該有.lck文件。如果你這樣做,並且沒有人正在運行這些應用程序,則可以刪除它們。而且你應該因爲某些東西沒有完成並清理妥當,並且會導致問題。 – 2012-01-08 01:06:17

相關問題