2012-06-13 67 views
4
string Path = @"c:\Database\Mydatabase.db"; 

    string myConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path + ";Extended Properties=Paradox 5.x;"; 

    // Define the database query  
    string mySelectQuery = "SELECT id,name FROM people WHERE id < 3;"; 

    // Create a database connection object using the connection string  
    OleDbConnection myConnection = new OleDbConnection(myConnectionString); 

    // Create a database command on the connection using query  
    OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection); 

    // Open the connection  
    myCommand.Connection.Open(); 

    // Create a database reader  
    OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); 

錯誤發生在myCommand.Connection.Open();它說: 'c:\ Database \ Mydatabase.db'不是一個有效的路徑。確保路徑名拼寫正確,並且您已連接到文件所在的服務器。在C#中讀取.db文件

我想在C#中讀取.db文件。但是,我收到一個錯誤,我確信該文件位於那裏,錯誤對我來說沒有意義。你可以幫我嗎 ?或者我如何在C#中讀取.db(悖論)數據庫文件?

編輯: string Path = @「c:\ Database \」;

這種情況的錯誤是「Microsoft Jet數據庫引擎找不到對象‘人’。請確保該對象存在並且您拼寫其名稱和路徑名。」

如果我這樣改變它,C#如何找到將使用哪個數據庫文件?因爲,我沒有具體說明這是「Mydatabase.db」在任何地方

enter image description here

+2

C#進程是否擁有權限閱讀該文件? –

+0

你有看到這個嗎? HTTP://www.connectionstrings。com/paradox「請注意,您應該只指定數據庫所在的文件夾,而不是數據庫名稱本身。」 –

+0

我也試過了,它不起作用......我得到那個錯誤Microsoft Jet數據庫引擎找不到對象'people'。確保對象存在,並且正確拼寫其名稱和路徑名。 –

回答

2

確認它是一個SQLite數據庫,我只是將它下載到手機上並用SQLite查看器查看它。


您將需要下載的ADO.NET提供SQLite的:

「官方」 版本(從SQLite的,而不是MS)

http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

舊版本

http://sqlite.phxsoftware.com/

+0

是的,這是正確的,但它有.db文件擴展名,它被稱爲paradox文件或sqlite文件? –

+1

這不是一個Paradox文件,因此您無法使用Jet OLEDB提供程序連接到它。 – tcarvin

+0

好吧,我已經安裝了,你能提供一個例子,如何讀取C#中的SQLite數據庫? –

2

如果應用程序無法看到文件比它就有可能是一個安全問題的文件名。而「你」可以訪問該文件。應用程序不能。

這是一個Web應用程序?如果是這樣,那麼這就是問題所在。 asp.net/IIS無法在其虛擬目錄之外看到。在這種情況下,您需要提升/修改asp.net用戶帳戶的權限才能訪問該文件,或者在虛擬目錄中移動數據庫文件。這是App_Data目錄中一個很好的候選人。

+1

+1。我認爲你對權限是正確的,但對於'asp.net/IIS不能在其虛擬目錄之外看到'是不正確的,除非你更改了asp.net用戶帳戶的權限。幾乎所有事情都可以通過web.config或machine.config完成,而無需更改實際帳戶。對於這種情況,MSDN具有[示例](http://msdn.microsoft.com/zh-cn/library/wyts434y.aspx)配置。 –

+0

我以前從未使用該配置選項。 thanx指出了這一點。 –

0

According to this site,你應該只指定的文件夾名稱,而不是數據庫文件。

請注意,您應該只指定數據庫 所在的文件夾。不是數據庫名稱本身。

linked MSDN article表示如果要更新數據,則應使用Jet 4.0 Service Pack 5,否則它可能是隻讀的。在任何情況下,我會建議安裝服務包。

+0

我也試過,它不起作用...我得到那個錯誤Microsoft Jet數據庫引擎找不到對象'人'。確保對象存在,並且正確拼寫其名稱和路徑名。 –

+0

這是應該在問題中提出的相關信息。該數據庫文件中是否有「人員」表? – mgnoonan

+0

是的,我相信它在那裏! –

1

請嘗試使用these連接字符串中的一個。