1.invalid connectionstring format for parameter “Data Source”
当进行如下引用时出现标题错误
string appDBPath = Application.streamingAssetsPath + dbpath;
SqliteTool.Instance.ConnectDB(appDBPath);
经检索发现由于安卓端StreamingAssets路径是只读的,需要将原始文件转移到可读写文件夹中才可执行读写操作,当使用以下代码拷贝数据库到本地文件夹重建本地可读写数据库即可解决该错误
private IEnumerator ConnectDB(Action action)
{
if (!File.Exists(Application.persistentDataPath + "/DB/test.db"))
{
using (WWW www = new WWW(Application.streamingAssetsPath + "/DB/test.db"))
{
while (!www.isDone)
{
yield return null;
}
if (!Directory.Exists(Application.persistentDataPath + "/DB"))
Directory.CreateDirectory(Application.persistentDataPath + "/DB");
kk = www.bytes;
}
using (FileStream fi = File.Open(Application.persistentDataPath + "/DB/test.db", FileMode.OpenOrCreate))
{
fi.Write(kk, 0, kk.Length);
}
SqliteTool.Instance.ConnectDB(Application.persistentDataPath + "/DB/test.db");
action?.Invoke();
}
else
{
SqliteTool.Instance.ConnectDB(Application.persistentDataPath + "/DB/test.db");
yield return null;
action?.Invoke();
}
}
2.mono.data.sqlite.unsafenativemethods
问题1解决后出现标题所示错误经搜索后发现是sqlite3版本问题,需要下载libsqlite3来做安卓端的适配。关于libsqlite3可以直接百度下载也可以搜索教程自己编译,相关教程比较多,自行百度。
下载之后解压进入到如上图所示路径下所有文件放到工程目录中如下图所示
然后将目录下的所有libsqlite3.so选择Include Platforms→Android根据目录名进行Platform settings配置,当然如果已经配置过就不用重新配置了。
例如Plugins/Android/libs/arm64-v8a/libsqlite3.so文件配置即为ARM64
重新打包,正常运行。
这是一个更详细的关于sqlite3的使用介绍点击这里进入