移动模拟器Windows 10的SQLite UWP错误

时间:2015-10-24 15:59:59

标签: c# sqlite uwp

在尝试编译和运行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

2 个答案:

答案 0 :(得分:8)

以下是我如何使用SQLite:

  1. http://sqlite.org/download.html下载并安装Sqlite visual studio扩展程序 enter image description here

  2. 创建一个新的空白c#通用Windows平台应用程序。

  3. 右键点击项目参考 - &gt;添加参考 - &gt;通用Windows - &gt;扩展 - &gt;为Universal App Platform添加SQLite及其依赖Visual C ++ 2015 Runtime for Universal Windows enter image description here

  4. 右键单击项目节点 - &gt;管理NuGet包 - &gt;搜索SQLite.Net-PCL - &gt;安装默认版本3.0.5 enter image description here

  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;创建数据库连接时。