首页 > 解决方案 > 在 Android 上找不到 SQLite

问题描述

我有这个在 Unity 中开发的 android 应用程序。我正在使用 SQLite 来保存和访问我的数据。

当我在 Unity 编辑器上运行我的代码时,它运行良好。但是当我在数据库中进行一些更改后在我的android设备上尝试它时,它不起作用。所以我取消了这些更改并使用 Android Device Monitor 检查发生了什么。我发现,即使它看起来可以正常工作,它也会抛出一个 Unity 错误:无法找到 SQLite。

我只是不明白发生了什么。它可以在 Unity 编辑器上运行,并且在我的数据库发生更改之前,它也可以在 android 设备上运行(或者看起来就是这样)。

这是我用来连接数据库的代码:

 private void conecta()
    {
        if (Application.platform != RuntimePlatform.Android)
        {
            dbFile = Application.dataPath + "/StreamingAssets/" + databasefile;
        }
        else
        {
            dbFile = Application.persistentDataPath + "/" + databasefile;
            if (!File.Exists(dbFile))
            {
                WWW load = new WWW("jar:file://" + Application.dataPath + "!/assets/" + databasefile);
                while (!load.isDone)
                {
                }
                File.WriteAllBytes(dbFile, load.bytes);
            }
        }
        print("aaaaaaaaaaaaaaa");
        connection = new SqliteConnection("URI=file:" + dbFile);
        print("bbbbbbbbbbbbbb");
    }

在我的项目中,我的插件文件夹中有一些 dll。

插件文件夹

我的 Android 文件夹中有 libsqlite3.so,可以在图片中看到。我不明白发生了什么,因为当我运行应用程序时,它会访问数据库数据并存储更多数据,但显然它也会引发此错误。谁能帮帮我吗?

如果这些信息还不够,请告诉我。我会完成我的问题。

更新

我现在知道给出错误的确切代码行。我使用上面的代码在一些脚本中建立与 SQLite 数据库的连接。但是在这个附加到应用程序第一个屏幕的特定脚本中,错误来自这一行:

    connection = new SqliteConnection("URI=file:" + dbFile);

我不知道为什么。我将该代码用作一种方法,并在此脚本中使用了几次。我有一些按钮,只有在我的数据库中有数据时才能交互。当我在我的设备上运行它时,它们变得可以交互了。这就是为什么直到昨天我更改数据库文件时才看到错误的原因。您可以在下面看到访问新列和数据库中的表结构时出现的错误。

错误

桌子

我在两个表中添加了一列,当我尝试访问其中一列时,它会抛出一个错误,指出该表没有具有该名称的列。

新更新

我厌倦了这个错误并删除了我的数据库文件。之后我做了一个新的,我之前添加了列。发生的事情是无法找到 SQLite 继续。之后它一直说我的表没有我在另一个文件中添加的特定列。我不明白发生了什么事。那个新数据库从一开始就有这个专栏。

标签: androiddatabasesqliteunity3d

解决方案


我仍然不知道该应用程序有什么问题。但是我做了一个不同名称的新数据库文件,它现在可以工作了。


推荐阅读