作者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/cn.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