unity 连接 android 数据库 sqlite 解决方案
被网上各种转来转去的教程烦死了……如果你们看到这个教程我就默认你们运气好吧。
1、unity配置内容
你需要sqlite3.dll ,Mono.Data.Sqlite.dll,两个。一般来说你已经绝望地找到我这个教程的时候,这两个个东西你应该都搞到了,如果没搞到,就自己去找找教程。
将这两个放在unity的Assets/Plugins下,没有这个文件夹就创建一个。
紧接着你需要libsqlite3.so,将它放在Assets/Plugins/Android下,如果没有这个文件夹就创建一个。并且按我下面的图片来修改这东西的配置。
将一个在电脑上已经创建好的数据库放在Assets/Plugins/Android/asstes下,当然如果你想用SqliteConnection.CreateFile我也不反对,你可以自己尝试。
最后你的配置大概是这个样子:
2、数据库构造
看得懂看不懂随缘吧,但是就是这样实现的
public SQLiteHelper(string strs)
{
string dataSandBoxPath="";
#if UNITY_EDITOR
//这玩意表示当在unity运行时
dataSandBoxPath = "data source="+ Application.dataPath +"/DataSave" + strs + ".db";
//文件名字自己起
#endif
#if UNITY_ANDROID
//安卓上运行时
dataSandBoxPath = Application.persistentDataPath + "/DataSave" + strs + ".db";
//这是你安卓的路径
if (!Directory.Exists(Application.persistentDataPath))
{
Directory.CreateDirectory(Application.persistentDataPath);
}
#endif
try
{
WWW loadWWW = new WWW("jar:file://" + Application.dataPath + "!/assets/DataSave" + strs + ".db");
if (!File.Exists(dataSandBoxPath))
{
while(!loadWWW.isDone)
{
//如果你用www创建数据库,这个不能省
}
File.WriteAllBytes(dataSandBoxPath,loadWWW.bytes);
//自己研究
}
#if UNITY_EDITOR
dbConnection = new SqliteConnection(dataSandBoxPath);
#endif
#if UNITY_ANDROID
dbConnection = new SqliteConnection("URI=file:" + dataSandBoxPath);
//安卓的路径
#endif
dbConnection.Open();
}
catch (Exception e)
{
}
}