作者gpctv (gpctv)
看板AndroidDev
標題[問題] SQLITE讀不到已存在的DB
時間Sun Jun 3 02:49:26 2018
各位前輩們,不好意思想請教大家一個問題。
自從我的Android 升級至8 oreo後,我的SQLITE DB 在
SQLiteDatabase db=dbhelper.getReadableDatabase();
這段一直會有錯誤。
當我試著使用adb shell的工具將DB檔案刪除後重開APP
又能正常,但相對地裡面的資料也沒了。
但如果我把DB再放回databases的資夾,他又會出現錯誤
訊息
錯誤訊息如下:
https://ideone.com/HYrXeB
第71行就是 getApplicationContext().openOrCreateDatabase
當然我剛開始也有建立繼承SQLiteOpenHelper 但是在getReadableDatabase()那段也
會有一樣的錯誤訊息,故我將它註解掉了。
以下是程式碼:
DB CREATE:
https://ideone.com/6uaQC4
然後這個是我目前的主程式:
https://ideone.com/OvOi6u
然後因為在懷疑是否為CreatDB有問題,所以目前將CreatDB 註解掉,但還是有相同問
題。
然後我找過文章,也有人說可能是權限問題,所以我試著將讀寫EXTERNAL_STORAGE的權限
打開
以下是AndroidManifest.xml
https://ideone.com/brPDHf
但還是一樣的錯誤訊息。
在stackoverflow 也有人說使用路徑,所以我也曾試過SQLiteDatabase.openDatabase去
直接帶路徑開啟,但一樣有誤。
所以我已經不知道還有什麼辦法。
之前從kitkat升級到lollipop再到Nougat都沒問題,但是這次無論我怎麼試還是弄不好。
再有勞各位高手。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.190.250
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1527965375.A.544.html
1F:推 evo1994: 請問一下你的query方法大概是要做什麼咧,而且你db好像 06/03 21:44
2F:→ evo1994: 不是儲存在sd卡的樣子,close的方法也怪怪的@@ 06/03 21:44
3F:→ gpctv: Hi evo 你好,query只是單純回傳資料後塞到listview,之前都 06/03 22:40
4F:→ gpctv: 是正常,但升級後一直錯在getReadableDatabase那段 06/03 22:40
5F:推 zerofinal: 看了一下寫法,和我的不太一樣,我是直接參考官網 06/06 13:31
7F:→ gpctv: Hi zero 大,感謝你,但我剛剛試了一下,無論怎麼改在mDbHelpe 06/06 20:28
8F:→ gpctv: r.getWritableDatabase();那行都會有錯誤訊息! 06/06 20:28
9F:→ gpctv: 用read也會有 06/06 20:28
11F:→ gpctv: 有空再來使用存在assets folder的方法好了!! 06/07 00:54
13F:→ gpctv: an-existing-database-with-an-android-application 06/07 00:54
14F:→ acoimfjn1b: db檔單獨拿出來可以正常讀取嗎? 06/07 12:42
15F:→ gpctv: 可以。我在猜會不會是owner的問題!!所以想用上面的方法試試 06/07 13:10
16F:→ gpctv: Hi All,沒有錯,經過我多天的研究,的確是owner的問題,這次a 06/10 02:38
17F:→ gpctv: ndroid改版至Oreo後,如果db不是由本身的app create而是用sh 06/10 02:38
18F:→ gpctv: ell的方式放進去,程式就會報錯,所謂我將db放到assets的fold 06/10 02:39
19F:→ gpctv: er 在用file inputstream的方式複製到databases就能順利讀 06/10 02:39
20F:→ gpctv: 取了,非常感謝各位高手前輩的指教,謝謝大家^^ 06/10 02:39