2012-09-28 181 views
2

我試圖做一個SQLite數據庫v3的一個非常基本的連接,我使用MonoDevelop的3.0和Mono 2.10,但無法得到連接到數據庫。我可以讓應用程序創建數據庫,但它立即失敗嘗試連接到它。有什麼建議麼?我已經開始與不同的數據庫,但後來決定讓我的應用程序試圖創建一個數據庫空,然後連接到它。這似乎仍然失敗。單無法打開SQLite數據庫

SqliteConnection.CreateFile("db\\DataWorksProg.s3db"); 
SqliteConnection conn = new SqliteConnection("Data Source=file:db\\DataWorksProg.s3db"); 
conn.Open(); 

這一小段代碼失敗,有關無法打開數據庫文件中的錯誤。

Mono.Data.Sqlite.SqliteException: Unable to open the database file 

權限看起來不錯,我在項目中有Sqlite3.dll,它似乎工作正常。我錯過了什麼明顯的?我在Visual Studio的一側還不錯,但還是相當新鮮的單聲道/ MonoDevelop的環境中工作。

回答

0

這裏想通了我的問題,所有的東西,等等。顯然不是使用

"Data Source=file:db\\DataWorksProg.s3db" 

我應該一直在使用

"URI=file:db\\DataWorksProg.s3db" 

切換到URI,它按預期工作。我從閱讀,根據2.0配置文件,需要代替URI數據源部分的文檔想,但我得到了我希望的結果。

4

什麼平臺?

我不相信你需要創建一個文件。如果沒有找到,iirc會創建數據庫文件。

FWIW,在Mac上,我做(注意URI一個漂亮的標準路徑;我沒有用Data Source)...

using System; 
using System.Data; 
using Mono.Data.Sqlite; 

namespace test 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      IDbConnection conTemp = null; 
      IDbCommand cmdTemp = null; 

      conTemp = (IDbConnection)new SqliteConnection ("URI=file:/Users/userName/mnmh.db"); 
      conTemp.Open(); 
      cmdTemp = conTemp.CreateCommand();   
      cmdTemp.CommandText = "SELECT * FROM employee"; 
      IDataReader drTemp = cmdTemp.ExecuteReader(); 
      while (drTemp.Read()) { 
       Console.WriteLine (drTemp.GetString (0)); 
      } 


     } 
    } 
} 

等等等等

檢查顯而易見的 - - 你提到你使用

references required

+0

關於平臺,現在在Windows上構建,這就是我遇到問題的地方,但希望部署ion Linux – Adam