Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WinRT应用程序中使用SQLite时出现异常_Sqlite_Windows Runtime_Sqlite Net - Fatal编程技术网

在WinRT应用程序中使用SQLite时出现异常

在WinRT应用程序中使用SQLite时出现异常,sqlite,windows-runtime,sqlite-net,Sqlite,Windows Runtime,Sqlite Net,我正在构建一个Windows 8应用程序,现在我想将SQLite用于此应用程序。我通过Visual Studio 2013扩展管理器安装了用于Windows运行时的SQLite,并通过NuGet将SQLite net添加到我的项目中 我试图在我的app.xaml.csOnLaunched中创建一个数据库,但我在运行项目时遇到此异常: 无法加载DLL“sqlite3”:找不到指定的模块。 (来自HRESULT的异常:0x8007007E) 这很奇怪,因为编译过程中没有错误。无论如何,我认为它试图告

我正在构建一个Windows 8应用程序,现在我想将SQLite用于此应用程序。我通过Visual Studio 2013扩展管理器安装了用于Windows运行时的
SQLite
,并通过NuGet将
SQLite net
添加到我的项目中

我试图在我的app.xaml.cs
OnLaunched
中创建一个数据库,但我在运行项目时遇到此异常:

无法加载DLL“sqlite3”:找不到指定的模块。 (来自HRESULT的异常:0x8007007E)

这很奇怪,因为编译过程中没有错误。无论如何,我认为它试图告诉我需要引用一个附加的DLL:
sqlite3.DLL
,但这不起作用。我的文件系统上有6个不同的DLL:ARM、x64和x86的调试版本和发布版本。我尝试将x86发行版添加到我的项目中,但这导致了以下异常:

对“C:\Users\Leon\Documents\Visual Studio”的引用 2013\Projects\Googalytics\packages\SQLite\x86\sqlite3.dll'无法 添加。请确保该文件是可访问的,并且 有效的程序集或COM组件

非常遗憾的是,sqlite net的文档很糟糕,非常过时(示例甚至不再有效),非常不完整,也没有提到手动添加DLL。所以我有两个问题:

  • 如何解决此特定问题
  • 在哪里可以找到sqlite net的最新文档
  • 编辑:我用来创建数据库的代码是:

    private void InitializeDatabase()
    {
        var db = new SQLiteConnection("Googalytics");
    
        db.CreateTable<Account>();
        db.CreateTable<WebProperty>();
        db.CreateTable<Profile>();
    }
    
    edit2:有关我的设置的更多信息:

    • Visual Studio 2013 RC
    • Windows 8.1 RTM
    • SQLite for Windows Runtime 3.8.0.2
    • sqlite net 1.0.7

    您的项目的构建模式当前设置为任何CPU,默认设置是什么。因为SqLite程序集不是作为任何CPU构建的,所以需要将构建模式设置为X86并添加X86 SqLite引用

    部署应用程序时,您还需要创建3个软件包,而不是1个AnyCPU软件包

    因为您的项目是AnyCPU,所以在尝试添加x86时会收到错误消息,x86对AnyCPU无效


    更新 我试图复制你的问题。我为Visual Studio Ultimate 2012安装了
    SQLite for Windows Runtime
    ,之后我创建了一个Windows应用商店项目,然后添加了SQLite引用,之后我添加了
    SQLite net
    ,最后我添加了用于DB创建的代码

    我稍微修改了代码(路径和表)。但是我的代码没有给出任何错误

    我自己不需要引用SqLite程序集。因为通过将扩展安装到Visual Studio中,您可以在扩展列表中获得引用(仍然需要选择它,而不是添加DLL):

    但正如我在第一个答案中所说,您需要将构建模式设置为“任何CPU”以外的其他模式

    我的示例在我的上(测试时将配置设置为x86)


    更新2 数据库路径:

    var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
    var db = new SQLite.SQLiteConnection(dbPath);
    

    我在configuration manager中将“active solution platform”设置为x86,但在尝试将x86程序集添加到我的项目(调试版本和发布版本)时仍然会遇到相同的错误。这是一部电影IE:这样我就可以重现problem@LeonCullens添加了额外的信息该死。。。我做错了什么:我尝试通过添加引用->浏览手动添加DLL。当我从Extensions列表中选择它时,它工作得非常好(好吧……SQLite仍然抛出一个异常,但另一个异常……可能是代码问题)。
    var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
    var db = new SQLite.SQLiteConnection(dbPath);