我在我的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的笔记本电脑上
提前致谢。
我终于让它工作了。问题是,至少在我看来,Android基于Linux体系结构,因此它不能与.dll库一起使用,我必须改用.so库。MonoDevelop自己的库不会发生这种情况。我猜想是在构建中翻译了这些库,但没有使用sqlite3.dll这样的外部库。
我把这个.so文件放到/ Assets / Plugins / Android中,然后Unity会自动找到它。在检查器中,我必须在“选择用于puglin的平台”中选择“ Android”,并在CPU中选择“ AR Mv 7”。我希望这对有相同问题的其他人有用。
由于.so库不在SQLite的官方网站上,因此如果有人需要它,请给我发送消息,然后我将通过邮件发送它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句