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/