问题描述
我需要从数据库中的表“级别”中读取行。 数据库将在应用程序首次启动时从资产复制到数据库文件夹。 当我尝试查看文件夹“数据库”中的内容时,inside 就是其中的内容。
如果我将所有文件保存在桌面上的数据库文件夹中,并在“db browser for sqlite”上打开 dbarkanoid,则“levels”表不存在。
如果我只将 dbarkanoid 保存在桌面上的数据库文件夹中,并在“db browser for sqlite”上打开 dbarkanoid,则存在“levels”表。
所以,当然,如果我从数据库中删除 shm 和 wal 文件,该应用程序可以正常工作并且可以毫无问题地找到“级别”表。
那就是从assets复制db的方法:
private void copyDataBase() throws IOException {
OutputStream myOutput = new FileOutputStream(DB_PATH + DB_NAME);
byte[] buffer = new byte[1024];
int length;
InputStream myInput = myContext.getAssets().open(DB_NAME);
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer,length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)