看板 AndroidDev 關於我們 聯絡資訊
各位前輩們,不好意思想請教大家一個問題。 自從我的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://www.ptt.cc/bbs/AndroidDev/M.1527965375.A.544.html
evo1994: 請問一下你的query方法大概是要做什麼咧,而且你db好像 06/03 21:44
evo1994: 不是儲存在sd卡的樣子,close的方法也怪怪的@@ 06/03 21:44
gpctv: Hi evo 你好,query只是單純回傳資料後塞到listview,之前都 06/03 22:40
gpctv: 是正常,但升級後一直錯在getReadableDatabase那段 06/03 22:40
zerofinal: 看了一下寫法,和我的不太一樣,我是直接參考官網 06/06 13:31
zerofinal: https://goo.gl/X875UB 06/06 13:31
gpctv: Hi zero 大,感謝你,但我剛剛試了一下,無論怎麼改在mDbHelpe 06/06 20:28
gpctv: r.getWritableDatabase();那行都會有錯誤訊息! 06/06 20:28
gpctv: 用read也會有 06/06 20:28
gpctv: https://ideone.com/HYrXeB 06/06 20:31
gpctv: 有空再來使用存在assets folder的方法好了!! 06/07 00:54
gpctv: an-existing-database-with-an-android-application 06/07 00:54
acoimfjn1b: db檔單獨拿出來可以正常讀取嗎? 06/07 12:42
gpctv: 可以。我在猜會不會是owner的問題!!所以想用上面的方法試試 06/07 13:10
gpctv: Hi All,沒有錯,經過我多天的研究,的確是owner的問題,這次a 06/10 02:38
gpctv: ndroid改版至Oreo後,如果db不是由本身的app create而是用sh 06/10 02:38
gpctv: ell的方式放進去,程式就會報錯,所謂我將db放到assets的fold 06/10 02:39
gpctv: er 在用file inputstream的方式複製到databases就能順利讀 06/10 02:39
gpctv: 取了,非常感謝各位高手前輩的指教,謝謝大家^^ 06/10 02:39