我正在使用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();
}
}
答案 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();
}