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

看板AndroidDev作者 (gpctv)時間5年前 (2018/06/03 02:49), 編輯推噓2(2018)
留言20則, 4人參與, 5年前最新討論串1/1
各位前輩們,不好意思想請教大家一個問題。 自從我的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

06/03 21:44, 5年前 , 1F
請問一下你的query方法大概是要做什麼咧,而且你db好像
06/03 21:44, 1F

06/03 21:44, 5年前 , 2F
不是儲存在sd卡的樣子,close的方法也怪怪的@@
06/03 21:44, 2F

06/03 22:40, 5年前 , 3F
Hi evo 你好,query只是單純回傳資料後塞到listview,之前都
06/03 22:40, 3F

06/03 22:40, 5年前 , 4F
是正常,但升級後一直錯在getReadableDatabase那段
06/03 22:40, 4F

06/06 13:31, 5年前 , 5F
看了一下寫法,和我的不太一樣,我是直接參考官網
06/06 13:31, 5F

06/06 13:31, 5年前 , 6F
06/06 13:31, 6F

06/06 20:28, 5年前 , 7F
Hi zero 大,感謝你,但我剛剛試了一下,無論怎麼改在mDbHelpe
06/06 20:28, 7F

06/06 20:28, 5年前 , 8F
r.getWritableDatabase();那行都會有錯誤訊息!
06/06 20:28, 8F

06/06 20:28, 5年前 , 9F
用read也會有
06/06 20:28, 9F

06/06 20:31, 5年前 , 10F

06/07 00:54, 5年前 , 11F
有空再來使用存在assets folder的方法好了!!
06/07 00:54, 11F

06/07 00:54, 5年前 , 12F

06/07 00:54, 5年前 , 13F
an-existing-database-with-an-android-application
06/07 00:54, 13F

06/07 12:42, 5年前 , 14F
db檔單獨拿出來可以正常讀取嗎?
06/07 12:42, 14F

06/07 13:10, 5年前 , 15F
可以。我在猜會不會是owner的問題!!所以想用上面的方法試試
06/07 13:10, 15F

06/10 02:38, 5年前 , 16F
Hi All,沒有錯,經過我多天的研究,的確是owner的問題,這次a
06/10 02:38, 16F

06/10 02:38, 5年前 , 17F
ndroid改版至Oreo後,如果db不是由本身的app create而是用sh
06/10 02:38, 17F

06/10 02:39, 5年前 , 18F
ell的方式放進去,程式就會報錯,所謂我將db放到assets的fold
06/10 02:39, 18F

06/10 02:39, 5年前 , 19F
er 在用file inputstream的方式複製到databases就能順利讀
06/10 02:39, 19F

06/10 02:39, 5年前 , 20F
取了,非常感謝各位高手前輩的指教,謝謝大家^^
06/10 02:39, 20F
文章代碼(AID): #1R4kQ_L4 (AndroidDev)