加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 19:09:18 所属栏目:百科 来源:网络整理
导读:我正在构建一个 Windows 8应用程序,现在我想将SQLite用于此应用程序.我通过Visual Studio 2013扩展管理器为Windows Runtime安装了SQLite,并通过NuGet将sqlite-net添加到我的项目中. 我正在尝试在我的app.xaml.cs OnLaunched中创建一个数据库,但是当我运行项
我正在构建一个 Windows 8应用程序,现在我想将SQLite用于此应用程序.我通过Visual Studio 2013扩展管理器为Windows Runtime安装了SQLite,并通过NuGet将sqlite-net添加到我的项目中.

我正在尝试在我的app.xaml.cs OnLaunched中创建一个数据库,但是当我运行项目时,我得到了这个异常:

Unable to load DLL ‘sqlite3’: The specified module could not be found.
(Exception from HRESULT: 0x8007007E)

这很奇怪,因为在编译期间没有错误.无论如何,我认为它试图告诉我,我需要引用一个额外的DLL:sqlite3.dll,但这不起作用.我的文件系统上有6个不同的DLL:ARM,x64和x86的调试版和发行版.我尝试将x86发行版添加到我的项目中,但这会导致此异常:

A reference to ‘C:UsersLeonDocumentsVisual Studio
2013ProjectsGoogalyticspackagesSQLitex86sqlite3.dll’ could not
be added. Please make sure that the file is accessible,and that it is
a valid assembly or COM component.

令人遗憾的是,sqlite-net的文档很糟糕,它已经过时了(示例甚至不再起作用),它非常不完整,并且没有提到手动添加DLL.所以我有两个问题:

>我如何解决这个特殊问题?
>我在哪里可以找到sqlite-net的最新文档?

编辑:我用来创建数据库的代码是:

private void InitializeDatabase()
{
    var db = new SQLiteConnection("Googalytics");

    db.CreateTable<Account>();
    db.CreateTable<WebProperty>();
    db.CreateTable<Profile>();
}

我从这里打电话给那个方法:

InitializeDatabase();

if (rootFrame.Content == null)
{
    // When the navigation stack isn't restored navigate to the first page,// configuring the new page by passing required information as a navigation
    // parameter
    if (!rootFrame.Navigate(typeof(MainPage),args.Arguments))
    {
        throw new Exception("Failed to create initial page");
    }
}
// Ensure the current window is active
Window.Current.Activate();

edit2:有关我的设置的更多信息:

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

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

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

由于您的项目是AnyCPU,因此在尝试添加x86时会收到错误消息,因此x86对AnyCPU无效.

UPDATE

我试图复制你的问题.我为Visual Studio Ultimate 2012安装了SQLite for Windows Runtime,之后我创建了一个Windows Store Project,然后添加了SqLite引用,之后我添加了sqlite-net,最后我添加了用于创建数据库的代码.

我稍微修改了一下代码(路径和表格).但我的代码完全没有错误.

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

但仍然像我在第一个答案中所说,你需要将你的构建模式设置为“任何CPU”之外的其他模式

我的例子是在我的skydrive上(当测试设置配置为x86时).

更新2

Db路径:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读