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/ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章