unity 使用 sqlite 数据库遇到的问题 unity android 使用sqlite


在用unity做开发时,需要使用sqlite作为数据库,于是百度,方法基本一致


1  Assets 中 建立文件夹 Plugins

并且导入以下几个dll

Mono.Data.Sqlite.dll

sqlite3.dll

System.Data.dll


2 代码实现

代码可以参考  xuanyusong大大   http://www.xuanyusong.com/archives/831


但是在运行时却出现了如下的问题


错误信息1

System.DllNotFoundException: Assets/Plugins/sqlite3.dll
 at (wrapper managed-to-native) Mono.Data.Sqlite.UnsafeNativeMethods:sqlite3_open_v2 (byte[],intptr&,int,intptr)
 at Mono.Data.Sqlite.SQLite3.Open (System.String strFilename, SQLiteOpenFlagsEnum flags, Int32 maxPoolSize, Boolean usePool) [0x00000] in <filename unknown>:0 
 at Mono.Data.Sqlite.SqliteConnection.Open () [0x00000] in <filename unknown>:0 
 at (wrapper remoting-invoke-with-check) Mono.Data.Sqlite.SqliteConnection:Open ()


错误信息2

Failed to load 'Assets/Plugins/sqlite3.dll', expected 64 bit architecture (IMAGE_FILE_MACHINE_AMD64), but was 0x014c.
Mono.Data.Sqlite.SQLite3:Open(String, SQLiteOpenFlagsEnum, Int32, Boolean)
Mono.Data.Sqlite.SQLite3:Open(String, SQLiteOpenFlagsEnum, Int32, Boolean)
Mono.Data.Sqlite.SqliteConnection:Open()


奇怪的是,我的unity最初只是显示   错误信息1  一度导致我找不到问题的原因。后来实在没办法,重启电脑,再次运行时才有了 错误提示2

才找到解决方案。


解决方法 下载一个64位的 sqlite3


此处提供代码以及 dll下载

链接:http://pan.baidu.com/s/1pJvG6Or 密码:6d2r


我的开发环境

unity5.0  win7 64位


-------------------------

继续更新

接上部分,PC上的unity可以顺利读取sqlite数据库之后,进一步尝试在android上读取。 同样也遇到了问题 ,无法读出数据


【思路】

因为unity中的文件不能直接转到android中,所以我们需要copy db到相应的位置才能读取


1) 放入db文件

如果是将数据库文件保存到 Plugins-》Android-》assets 中,你会发现,apk打包以后,数据库文件根本找不到了~(将apk改成rar解压变可以看到文件结构)

解决方法是建立 assets->>StreamingAssets 这个文件,将db放入,这样,生成apk以后db文件就会在 assets中看到。


真机测试db文件的地址是在 data/app/com.test.da-1.apk!/assets/test.db

而我们需要将db放到 data/data/com.test.da/files/test.db 中  (第三方数据库拷贝至Android才可以找到)


2) 复制db文件到可以读取的位置

     需要用到www的方式copy


3)读取数据库

   此处有一个坑,android上读取sqlite 需要一个 名为  libsqlite3.so 放入到   Assets--》--Plugins-》Android 中 不然无法读取文件。

   所以,在android上顺利读取,至少需要 4个文件

   

Mono.Data.Sqlite.dll

sqlite3.dll

System.Data.dll

libsqlite3.so


参考网站  http://forum.unity3d.com/threads/unity-3d-android-sqlite-examples.114660/ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值