【问题标题】:issue accessing SQLite database from Unity3D on Android device在 Android 设备上从 Unity3D 访问 SQLite 数据库的问题
【发布时间】:2015-04-13 21:48:16
【问题描述】:

我在我的 Unity3D 项目中添加了一个 SQLite 数据库,在我使用 Unity 编辑器时一切正常,但是当我在 Android 设备上测试游戏时,对数据库的访问失败。 有没有人遇到过同样的问题,能告诉我怎么解决吗?

代码示例:

using UnityEngine;
using System.Collections;
using Mono.Data.Sqlite;
using System.Data;

public class DBAccess : MonoBehaviour {

    void Start () {

        string connectionString = "URI=file:" +Application.dataPath + "/myDataBase"; //Path to database.
        IDbConnection dbcon;
        dbcon = (IDbConnection) new SqliteConnection(connectionString);

        dbcon.Open(); //Open connection to the database.

        IDbCommand dbcmd = dbcon.CreateCommand();

        string sql = "SELECT firstname, lastname FROM addressbook";

        dbcmd.CommandText = sql;

        IDataReader reader = dbcmd.ExecuteReader();

        while(reader.Read()) {
            string FirstName = reader.GetString (0);
            string LastName = reader.GetString (1);
            Debug.Log (FirstName + LastName);
        }

        // clean up
        reader.Close();
        reader = null;
        dbcmd.Dispose();
        dbcmd = null;
        dbcon.Close();
        dbcon = null;
    }
}

我在这个论坛的其他帖子中读到,其他人在构建时遇到了麻烦,不是我的情况,我可以生成 apk。

我在两个不同的设备上测试过,结果相同,所以我认为这不是设备的问题。

我正在使用 MonoDevelop 作为 IDE、Unity3D 的 5.0.1 版本和 Sqlite 3.8.9,所有这些都在装有 Windows 8.1 的笔记本电脑上进行

提前致谢。

【问题讨论】:

  • 访问失败如何
  • 好吧,视频游戏只是停止运行,它“冻结”

标签: c# sqlite unity3d database-connection


【解决方案1】:

我终于让它工作了。问题是,至少在我的情况下,Android 是基于 Linux 架构的,所以它不能与 .dll 库一起使用,我必须使用 .so librerie 来代替。 MonoDevelop 自己的库不会发生这种情况。我想这会在构建中翻译这些库,而不是像 sqlite3.dll 这样的外部库。

我把这个 .so 文件放到 /Assets/Plugins/Android 中,Unity 会自动找到它;在检查器中,我必须在“为 puglin 选择平台”中选择“Android”,在 CPU 中选择“AR Mv 7”。我希望这对其他有同样问题的人有用。

由于.so库不在SQLite官网上,如果有人需要,请给我留言,我会邮件发给。

【讨论】:

  • 所以你刚刚用那个 .so 库替换了 Sqlite3.dll 并且上面的代码工作了吗?
  • 是的,至少在我的情况下。如果它对你不起作用,请告诉我,我会尽力帮助你。
猜你喜欢
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2017-10-10
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
相关资源
最近更新 更多