Unity3D使用Sqlite遇到的各种问题及其解决方案
2016-10-31 17:16
423 查看
最近项目需要,在Unity3D里面使用Sqlite来存取数据,遇到了各种各样的问题,感觉网上找到的博客并没有描述清楚,在这里记录一下,如果能解决你遇到的一些问题那么最好不过了。
1.dll文件的引入。
网上各位的说法有些不同,但都要用到Mono.Data.Sqlite.dll和System.Data.dll两个文件。
我自己的电脑上只需要这两个动态链接库文件就可以在编辑器中正常运行,于是就这么把项目上传了,我的同事更新下来后却出问题了,提示DllNotFoundException。简单看了下提示,里面提到的sqlite3.dll,我没有拷贝过这个文件,不存在少上传了文件的问题。
我在Unity安装目录里找到了一个sqlite3.dll拷进plugins文件夹上传,同事更新下来依然报错:
System.DllNotFoundException: sqlite3 at (wrapper managed-to-native)
Mono.Data.SQLite.UnsafeNativeMethods:sqlite3_open_v2 (byte[],intprt&,int,intptr)
我猜测可能我安装了什么软件导致运行时能够加载到一个sqlite3.dll库,才发现以前cocos2d中用到了sqlite,可能是被加到了系统搜索路径下,于是拷了一个到plugins里面,再上传,同事更新后终于对了。
针对上面遇到的问题,我建议大家自己去找一个自己项目可用的sqlite3.dll文件。
2.安卓环境下的一些问题。
鉴于上面遇到了无法关联库文件的问题,我在安卓手平台下做了一些测试,发现运行中会抛出和上面一样的异常,这是因为sqlite3.dll在安卓环境下不能用的,需要的是.so文件,可以参考这里的提问。总结起来就是:你可以点击这里获取x86版本的库,或者点这里获取ARM版本的库。3.是否需要先建立好数据库文件?
看到某些教程说,要把数据库文件拷贝到StreamingAssets文件夹下,访问的时候都是加上persistentDataPath,让让你觉得应该先创建好数据库,然后拷过去。实际也有数据库中可以不预先存放数据的需求,我们就没必要先创建数据库。在初始化SqliteConnection的时候,如果对应位置没有这个数据库文件时是会新建一个数据库的。相关文章推荐
- 使用Git 过程中遇到的几个问题及其解决方案
- 在百度地图API中使用getOverlays方法遇到的问题及其解决方案
- Android Studio 使用遇到的各种问题及解决方案汇总
- Jacob使用中遇到的问题及其解决
- 解决方案:使用OWC11成生统计图时遇到的问题
- [项目过程中所遇到的各种问题记录]ORM篇——使用NHibernate配置对象实体的一些小问题
- Java使用Oracle遇到的最大游标超出问题及其解决方法
- Java使用Oracle遇到的最大游标超出问题及其解决方法
- 使用Linux过程中遇到的问题以及解决方案
- 使用Mencoder进行视频转换遇到的问题和相关解决方案
- [项目过程中所遇到的各种问题记录]编辑器篇——FCKeditor相关知识及各种常见使用问题
- [项目过程中所遇到的各种问题记录]ORM篇——使用NHibernate配置对象实体的一些小问题 22
- vc6 Unicode 使用时遇到的问题以及解决方案
- Appfuse使用中遇到的问题及解决方案
- [项目过程中所遇到的各种问题记录]ORM篇——使用NHibernate配置对象实体的一些小问题
- 使用Mencoder进行视频转换遇到的问题和相关解决方案
- sqlite3 jdbc、c接口、python接口处理中文时遇到的问题及其解决方法
- Ubuntu 8.10使用过程中遇到的问题及解决方案
- C++学习中遇到的问题及其解决方案
- 使用jQuery queue(队列) 遇到的问题及解决方案