android - 在 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 继续。之后它一直说我的表没有我在另一个文件中添加的特定列。我不明白发生了什么事。那个新数据库从一开始就有这个专栏。
解决方案
我仍然不知道该应用程序有什么问题。但是我做了一个不同名称的新数据库文件,它现在可以工作了。
推荐阅读
- webpack-4 - 在 AngularJS1.5.11 中使用 Webpack4 时构建失败
- excel - 如何通过匹配值对Excel中的多列进行排序
- selenium-webdriver - 我试图从硒中调用铬。浏览器正在打开,但没有加载数据
- java - 有时定位服务无法在后台运行
- php - 如何在 WordPress 主题中创建电子商务 html 模板?
- javascript - 如何在 reactjs 中单击按钮时呈现 .js 文件?
- javascript - 我需要它在同一个窗口中打开,而不是在新窗口中打开
- python-3.x - 对 Python 中的一个简单函数感到困惑
- javascript - 如何通过 javascript 中的常见 html 类移动 css 元素?
- ios - 创建 IBOutlet 导致 SIGABRT 错误