自己导入的stu.db无法使用 但是在onCreate方法内创建的db就可以用

自己导入的stu.db无法使用 但是在onCreate方法内创建的db就可以用

http://img1.sycdn.imooc.com//climg/5c094bad0001472e06510702.jpg

问题1:如图为什么在两个路径下都会出现有数据库文件 伴生的stu.db-journal又是有什么用处

问题2:多次报错后改用onCreate方法内创建数据库就可以成功使用 为什么Monitor直接导入stu.db就不行

问题3:即使使用onCreate方法创建数据库 仍在logcat中发现报错

12-06 16:11:07.011 1145-1145/? E/AudioMixer: AudioMixer::getTrackName out of available tracks
12-06 16:11:07.011 1145-1145/? E/AudioFlinger: no more track names available
    createTrack_l() initCheck failed -12; no control block?
12-06 16:11:07.011 1562-1647/system_process E/AudioTrack: AudioFlinger could not create track, status: -12
12-06 16:11:07.012 1562-1647/system_process E/SoundPool: Error creating AudioTrack
12-06 16:11:07.014 16992-16992/com.imooc.studio.sqlitedatabasedemo W/FileUtils: Failed to chmod(/storage/sdcard/stu.db): android.system.ErrnoException: chmod failed: EPERM (Operation not permitted)
12-06 16:11:16.749 1726-1726/com.android.inputmethod.latin I/LatinIME: Starting input. Cursor position = 3,3
12-06 16:11:16.807 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:16.815 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:16.927 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:16.949 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:25.186 1726-1726/com.android.inputmethod.latin I/LatinIME: Starting input. Cursor position = 2,2
12-06 16:11:25.239 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:25.248 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:25.256 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:25.283 16992-17008/com.imooc.studio.sqlitedatabasedemo D/EGL_emulation: eglMakeCurrent: 0x7fa64b481200: ver 3 1
12-06 16:11:28.842 1562-1647/system_process W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client
12-06 16:11:28.842 1145-1950/? E/AudioMixer: AudioMixer::getTrackName out of available tracks
12-06 16:11:28.842 1145-1950/? E/AudioFlinger: no more track names available
    createTrack_l() initCheck failed -12; no control block?
12-06 16:11:28.843 1562-1647/system_process E/AudioTrack: AudioFlinger could not create track, status: -12
12-06 16:11:28.843 16992-16992/com.imooc.studio.sqlitedatabasedemo W/FileUtils: Failed to chmod(/storage/sdcard/stu.db): android.system.ErrnoException: chmod failed: EPERM (Operation not permitted)
12-06 16:11:28.844 1562-1647/system_process E/SoundPool: Error creating AudioTrack


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

http://img1.sycdn.imooc.com//climg/5c0a3cc40001fd4405860467.jpg

这是系统对你的一个提示而已!系统对于不同的文件夹有着不同的功能和定义,如:专门存放音频的,图片的等。而对于开发者来说,最好不要用那些特殊意义的文件夹。你可以在sdcard新建一个文件夹,并存放你需要的资料就行了。

提问者 慕少4629978 2018-12-07 16:43:00

http://img1.sycdn.imooc.com//climg/5c0a32770001e4b808270314.jpg

如图,每次添加数据就会出现这样的报错,程序还是可以正常运行的

好帮手慕雪 2018-12-07 10:15:48

1)该文件是sqlite的一个临时的日志文件,主要用于sqlite事务回滚机制。2)你是如何判断不可用的呢?是不是路径写错了?你可以测试一下如果导入同一目录位置是否可以使用。3)是不是没有申请sdCard读写权限呢?如果是6.0以上还需要动态申请。祝:学习愉快

  • 提问者 慕少4629978 #1
    在删除db文件后 在该路径重新导入新的DB文件仍然不能写入 仍需代码创建 读写权限都申请了 是5.0的版本 数据是可以写入的 但是这报错看不懂是哪的问题
    2018-12-07 15:53:52
  • 好帮手慕雪 回复 提问者 慕少4629978 #2
    是真机吗?有的真机需要root后才能导入,但不建议root,这样就不支持系统升级了,而且有些对安全性能高的软件也是用不了的。
    2018-12-07 16:10:57
  • 提问者 慕少4629978 回复 好帮手慕雪 #3
    不是真机 用的自带的ADB 但是不影响运行 想知道这个报错是哪来的
    2018-12-07 16:39:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android网络操作与数据存储2018版
  • 参与学习           人
  • 提交作业       307    份
  • 解答问题       1613    个

本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师