2011-10-26 72 views
1

我有一個Windows Phone應用程序,並試圖連接到數據庫。數據庫是有效的,我已經驗證。我正在使用codeplex的sqlite客戶端來嘗試連接。無法連接到我的sqlite數據庫

首先添加我的數據庫,我的項目中使用「>添加>現有項目>」之後,我嘗試使用代碼來連接:

db = new SQLiteConnection(@"Database.db"); 
db.Open(); 

Debug.WriteLine("DB opened"); 
SQLiteCommand cmd = db.CreateCommand("SELECT * FROM Tags"); 
var lst = cmd.ExecuteQuery<Tags>(); 

foreach (Tags r in lst) 
{ 
    Debug.WriteLine(r.Tag); 
} 
Debug.WriteLine(":D"); 

我的標籤類看起來是這樣的:

public class Tags 
{ 
    public int id { get; set; } 
    public string Tag { get; set; } 
} 

我在sqlite項目中發現錯誤(在Sqlite3.Vdbe Prepare()),說有no such table:Tags。表在那裏,我查看了數據庫,表的名稱是正確的。

我在做什麼錯了?

+0

它不應該看起來像 db = new SQLiteConnection(@「Data Source = Database.db」); –

+0

不起作用,應用程序無法找到數據庫的位置 – Alex

+0

剛剛意識到你在WP7上。我不認爲它在那裏得到了支持。在WP7上,您可以使用IsolatedStorage或XML文件。如果你需要sql數據庫 - 創建一個後端並通過Web服務調用它。我知道這很奇怪,因爲默認情況下,iOS和Android都包含sql支持:( –

回答

0

嘗試提供完整路徑而不僅僅是文件名。我相信windows手機沒有「當前目錄」,所以應用程序可能在根文件夾中查找。

如果您向SQLite客戶端提供了一個不存在的文件,它將爲您自動創建一個空數據庫並「連接」到該文件。

+0

在項目根目錄中定義的本地文件的整個路徑是什麼?我嘗試給它整個Windows路徑,但我猜想winPho7 VM不允許它(應用程序的沙箱外) – Alex

+0

您可以使用'Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly()。GetName()。CodeBase).AbsolutePath)'來獲取可執行文件的目錄。此外,在打開連接之前測試'File.Exists(path_to_database)',以便您可以驗證這確實是問題。 –

+0

不起作用,應用程序凍結 – Alex