[英]How to make a ADO.Net connection (SQL Server or Oracle database) read-only
[英]Read-Only ADO.NET Connection String for Excel
我試圖防止使用ADO.NET讀取Excel文件時出現以下情況:
Microsoft Jet數據庫引擎無法打開文件“”。 它已由其他用戶專門打開,或者您需要獲得查看其數據的權限。
我知道它正在發生,因為另一個用戶打開了文件,但我無法擺脫它。 我試過添加Read Only=True;
到我的連接字符串,但這不起作用。 我還嘗試將連接Mode
設置為只讀,但是我不知道如何在C#中進行連接。
這是我的連接字符串:
Provider=Microsoft.Jet.OLEDB.4.0; data source=test.xls; Extended Properties="Excel 8.0;HDR=No;IMEX=1"
謝謝您的幫助!
如果您沒有該文件的權限,而不僅僅是在它完全打開時,也會出現這種情況。 無論如何,我始終發現解決此問題的最佳方法是將文件副本自動復制到新的臨時文件。 副本幾乎是即時的,即使對於大文件也是如此,因此它們不應該減慢你的速度,因為你的應用程序只是只讀的,所以你不必擔心之后丟棄臨時文件。
此外,這將清除所有可以清除的權限問題。 如果您具有讀取權限,則副本將起作用,如果沒有,則無論如何都沒有解決方法。 如果使臨時副本的目標路徑與工作簿的路徑相同,則您將擁有復制文件的完全權限。 ( Application.Path
)
FileCopy srcFile, destName
請使用FileCopy srcFile, destName
命令。
好吧,您說您嘗試將模式更改為只讀,那么您是如何做到的呢?
根據MSDN ,默認情況下,Microsoft Jet的OLE DB提供程序以讀/寫模式打開Microsoft Jet數據庫。 要以只讀模式打開數據庫,請將ADO Connection對象上的Mode屬性設置為adModeRead。
所以在C#中應該看起來像:
ADODB.Connection myConn = new new ADODB.Connection();
myConn.Mode = adModeRead; //1
myConn.Open(strConectionString, null, null, -1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.