2014-09-25 84 views
2

我試圖在Windows Phone 8.1上打開數據庫文件(foo.db)。在使用SQLite-Net插件時,我正在獲取以下SQLiteException:無法打開數據庫文件:foo.db(CannotOpen)。MVVMCross社區SQLite-Net插件 - 無法打開數據庫

下面是代碼:

public Db(ISQLiteConnectionFactory factory) 
{ 
    try 
    { 
     const string fileName = "foo.db"; 
     StorageFolder folder = ApplicationData.Current.LocalFolder; 
     using(this.connection = factory.Create(Path.Combine(folder.Path, fileName))) 
     { 
      //Do SOME STUFF 
     } 
    } 
    catch (Exception ex) 
    { 
     //SQLiteException: Could not open database file: foo.db (CannotOpen). 
    } 

} 

我已經證實了文件的路徑。如果我刪除社區插件並使用SQLite-net,則不會發生異常。

哪裏出錯?

謝謝。

+0

你可以編輯問題來說明什麼是例外嗎?這是WindowsPhone Xaml 8.1還是WindowsPhone Silverlight 8.1項目? – Stuart 2014-09-25 20:41:06

+0

這是一個「SQLiteException:無法打開數據庫文件:foo.db(CannotOpen)」。並且它在工廠被拋出。創建()。這是一個Windows Phone 8.1 Xaml項目 – 2014-09-26 04:47:31

+0

我甚至沒有意識到該項目有一個Jupiter Xaml分支 - 您使用的是哪個版本 - Windows應用商店?我想你可能會遇到一些路徑組合問題 - 例如在https://github.com/MvvmCross/MvvmCross-SQLite/blob/0d16aff5c14ad6617d0a86e34225bd06155b1731/Sqlite/Cirrious.MvvmCross.Community.Plugins.Sqlite/BaseClasses.cs#L952 - 你可以嘗試使用'CreateEx(options)'方法和在選項 – Stuart 2014-09-27 10:15:38

回答

0

我不知道它是否有幫助,但這就是我處理這個問題的方法。

我創建了ISQLiteConnection在我於平臺的項目,並註冊資格作爲一種國際奧委會:

Mvx.RegisterType<ISQLiteConnection>(() => new SQLiteConnection(fullPathtoDbFile)); 

然後,在我的核心(PCL)項目我解決它:

public ISQLiteConnection GetConnection() 
{ 
    if (_con == null) 
    { 
     _con = Mvx.Resolve<ISQLiteConnection>(); ; 
    } 
    return _con; 
} 
  • ISQLiteConnection是Cirrious.MvvmCross.Community.Plugins.Sqlite命名空間的一部分。