MvvmCross - Windows Phone 8 + SQLite - 无法打开数据库文件

时间:2015-01-26 23:53:24

标签: sqlite windows-phone-8 mvvmcross

我正在使用MvvmCross来创建Android,WPF和Windows Phone 8 / 8.1应用程序。我已经让SQLite在WPF和Android应用程序中运行良好。

使用Windows Phone应用程序时,我在SQLite数据库文件上调用Create()时遇到了问题。

第一次调用它时,create和open工作正常,但是当第二次调用create()时它总是失败。

代码:

ISQLiteConnection db = factory.Create("filename.sql");
db.Close();

错误:

"Could not open database file: filename.sql (CannotOpen)"

Stack:

at SQLite.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
at Cirrious.MvvmCross.Plugins.Sqlite.WindowsPhone.MvxWindowsPhoneSQLiteConnectionFactory.Create(String address)
at MvvmCrossPOC.Core.Services.MetadataService.OpenDatabase()

我按照这篇文章,以及其他类似步骤,并添加了MvvmCross SQLite插件(v3.5 - 安装包MvvmCross.HotTuna.Plugin.SQLite),但错误仍然存​​在。

WP8 SQLite error: The specified module could not be found

关于如何前进的任何想法?

代码示例:

public MetadataService(ISQLiteConnectionFactory SQLiteConnectionFactory)
{
    factory = SQLiteConnectionFactory;
}

public List<Platform> GetPlatformCollection()
{
    db = factory.Create(METADATA_REPO_NAME);
    try
    {
        return db.Table<Platform>().ToList();
    }
    finally
    {
        db.Close();
    }
}

1 个答案:

答案 0 :(得分:1)

精氨酸!要弄清楚这一点的时间就是我写错了代码。

请记住:服务是单身人士......所以,每次使用时都不必打开和关闭数据库!

在找到Stuart的SQLite示例后想出来:KittensDB

不确定为什么我没有在任何其他平台上看到此问题...

工作代码示例

public MetadataService(ISQLiteConnectionFactory factory)
{
    //Get the connection
    db = factory.Create(METADATA_REPO_NAME);

    db.CreateTable<PlatformStorage>();
    db.CreateTable<DashboardStorage>();
}

public List<Platform> GetPlatformCollection()
{
    return db.Table<Platform>().ToList();
}