[問題] [已解決]SQLITE讀不到已存在的DB

作者: gpctv (gpctv)   2018-06-03 02:49:26
各位前輩們,不好意思想請教大家一個問題。
自從我的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都沒問題,但是這次無論我怎麼試還是弄不好。
再有勞各位高手。
作者: evo1994 (Evo)   2018-06-03 21:44:00
請問一下你的query方法大概是要做什麼咧,而且你db好像不是儲存在sd卡的樣子,close的方法也怪怪的@@
作者: gpctv (gpctv)   2018-06-03 22:40:00
Hi evo 你好,query只是單純回傳資料後塞到listview,之前都是正常,但升級後一直錯在getReadableDatabase那段
作者: zerofinal (人生~)   2018-06-06 13:31:00
看了一下寫法,和我的不太一樣,我是直接參考官網https://goo.gl/X875UB
作者: gpctv (gpctv)   2018-06-06 20:28:00
Hi zero 大,感謝你,但我剛剛試了一下,無論怎麼改在mDbHelper.getWritableDatabase();那行都會有錯誤訊息!用read也會有https://ideone.com/HYrXeB有空再來使用存在assets folder的方法好了!!https://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application
作者: acoimfjn1b (acoimfjn1b)   2018-06-07 12:42:00
db檔單獨拿出來可以正常讀取嗎?
作者: gpctv (gpctv)   2018-06-07 13:10:00
可以。我在猜會不會是owner的問題!!所以想用上面的方法試試

Links booklink

Contact Us: admin [ a t ] ucptt.com