在尝试编译和运行VS 2015 UWP应用程序时运行Mobile Emulator时出现以下错误。使用本地计算机或模拟器时,应用程序运行正常。
System.TypeInitializationException was unhandled by user code
HResult=-2146233036
Message=The type initializer for 'SQLitePCL.raw' threw an exception.
Source=SQLitePCL.raw
TypeName=SQLitePCL.raw
StackTrace:
at SQLitePCL.raw.sqlite3_open_v2(String filename, sqlite3& db, Int32 flags, String vfs)
at SQLite.SQLiteConnection..ctor(String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks)
at SQLite.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
at App3.MainPage.LoadSQLData()
at App3.MainPage..ctor()
at App3.App3_XamlTypeInfo.XamlTypeInfoProvider.Activate_0_MainPage()
at App3.App3_XamlTypeInfo.XamlUserType.ActivateInstance()
InnerException:
HResult=-2146233052
Message=Unable to load DLL 'sqlite3': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Source=SQLitePCL.raw
TypeName=""
StackTrace:
at SQLitePCL.SQLite3Provider.NativeMethods.sqlite3_win32_set_directory(UInt32 directoryType, String directoryPath)
at SQLitePCL.SQLite3Provider..ctor()
at SQLitePCL.raw..cctor()
我有以下参考资料: SQLite for Universal Windows 3.9.1 sqlite的净PCL 用于通用Windows的Microsoft Visual C ++ 2013运行时包
"使用(var db ......:
)中发生错误的代码 int recCtr = 0;
var root = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "BaseBallOU.db");
List<string> NHLCollection = new List<string>();
using (var db = new SQLite.SQLiteConnection(dbPath))
{
var NHLlist = db.Table<Teams>().ToList();
foreach (var item in NHLlist)
{
recCtr++;
NHLCollection.Add(item.TeamName.ToString());
}
}
我看到一些类似的帖子,但有些是过时的,没有使用最新的SQLite库和pcl。
我正在寻找正确的SQLite dll,sqlite pcls,运行时(例如VC ++ 2013?以及可用于在本地计算机和手机模拟器上编译和运行UWP应用程序的版本号。
TIA
答案 0 :(得分:8)
以下是我如何使用SQLite:
从http://sqlite.org/download.html下载并安装Sqlite visual studio扩展程序
创建一个新的空白c#通用Windows平台应用程序。
右键点击项目参考 - &gt;添加参考 - &gt;通用Windows - &gt;扩展 - &gt;为Universal App Platform添加SQLite及其依赖Visual C ++ 2015 Runtime for Universal Windows
右键单击项目节点 - &gt;管理NuGet包 - &gt;搜索SQLite.Net-PCL - &gt;安装默认版本3.0.5
将您的代码更改为以下内容:
using (var db = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), dbPath))
{
...
}
答案 1 :(得分:1)
步骤1:使用Visual Studio 2015为通用Windows平台开发安装SQLite VSIX pacakge
https://www.sqlite.org/2016/sqlite-uwp-3130000.vsix
第2步:安装NuGet包SQLite.NET-PCL
PM&GT;安装包SQLite.NET-PCL
第3步:添加参考
添加参考 - &gt;通用Windows - &gt;扩展程序 - &gt;确保已检查以下包: &#34; SQLite for Universal Windows Platform&#34; &#34; Visual C ++ 2015 Runtime for Universal Windows Platform Apps&#34;
如果您没有为VC ++ 2015 Runtime添加引用,则会出现错误提及&#34;无法加载DLL&#39; sqlite3&#39;在SQLite Net Platform WinRT&#34;创建数据库连接时。