加载数据库的完整性保证(SQLite Error 11 - database disk image is malformed的解决方法)
2012-11-05 18:25
501 查看
在确定数据库并没有损坏的情况下,如果出现sqlite error 11,那就很可能是因为在加载写入数据库的时候出现了影响加载进行的动作。
如果数据库很小,如50M以下,那么一般不用考虑这个问题,因为现在的手机、平板的处理速度能够秒杀这个数量级的数据库的读写操作。
然而,如果数据库超过50M,那么就要慎重考虑这个问题了,因为通常这个时候在第一次使用、加载数据库的时候需要花费几秒到十几秒的时间。如果在这个时间段里出现点击屏幕等操作,影响到数据库的正常加载,那么,将会导致以后要使用的数据库加载不完整,就会出现sqlite error 11,同时机器会自动删除该无用的数据库。
为了解决这个问题,就要确保用户操作不会干扰到后台数据库的加载。我想到的办法便是使用processDialog。通过使用processDialog,把屏幕的焦点让给它,同时新开一个线程去进行数据库加载的操作。
为了保险起见,在该段代码的实现中,是让程序在数据库加载完成后就自动关闭。这样保证了用户下一次的交互是在程序的数据库完整性得到保证的情况下交互的。
本文出自 “玄月天下” 博客,请务必保留此出处http://xuewei.blog.51cto.com/6061915/1050794
如果数据库很小,如50M以下,那么一般不用考虑这个问题,因为现在的手机、平板的处理速度能够秒杀这个数量级的数据库的读写操作。
然而,如果数据库超过50M,那么就要慎重考虑这个问题了,因为通常这个时候在第一次使用、加载数据库的时候需要花费几秒到十几秒的时间。如果在这个时间段里出现点击屏幕等操作,影响到数据库的正常加载,那么,将会导致以后要使用的数据库加载不完整,就会出现sqlite error 11,同时机器会自动删除该无用的数据库。
为了解决这个问题,就要确保用户操作不会干扰到后台数据库的加载。我想到的办法便是使用processDialog。通过使用processDialog,把屏幕的焦点让给它,同时新开一个线程去进行数据库加载的操作。
private void firstUse() { if (SettingUtils.getBooleanValue(this, SettingUtils.KEY_FIRST_USE)) { dialog = ProgressDialog.show(MainActivity.this, "加载数据", "加载数据中...\n(第一次使用需要加载数据,请耐心等待,谢谢!\n加载完成后程序会自动关闭。)", true); new Thread() { public void run() { try { FileUtil.initDatabase(MainActivity.this, "yourDatabase"); SettingUtils.saveBooleanValue(MainActivity.this, SettingUtils.KEY_FIRST_USE, false); ttsManager.installEngineFile(); } catch (Exception e) { e.printStackTrace(); } finally { dialog.dismiss(); dbManager.close(); finish(); } } }.start(); } }
为了保险起见,在该段代码的实现中,是让程序在数据库加载完成后就自动关闭。这样保证了用户下一次的交互是在程序的数据库完整性得到保证的情况下交互的。
本文出自 “玄月天下” 博客,请务必保留此出处http://xuewei.blog.51cto.com/6061915/1050794
相关文章推荐
- Sqlite Database disk image is malformed的解决方法
- svn报错解决方法:svn:E200030: sqlite[S11]:database disk image is malformed
- DatabaseError:database disk image is malformed的解决方法
- svn cleanup: sqlite: database disk image is malformed 解决方法
- 【原创】sqlite3数据库SQL error: database disk image is malformed问题探究(1)
- 【转】SQLite提示database disk image is malformed的解决方法
- database disk image is malformed解决方法
- 'ppm upgrade failed: DBD::SQLite::db selectrow_array failed: database disk image is malformed' 问题的解决
- SQLite出现database disk image is malformed(11)的处理
- database disk image is malformed解决方法
- sqlite关于The database disk image is malformed问题的解决
- sqlite关于The database disk image is malformed问题的解决
- SQLITE3数据库错误:database disk image is malformed
- SQLITE写入大量大数据时,报错ERR 11:database disk image is malformed
- svn:database disk image is malformed问题解决方法
- SQLite-database disk image is malformed问题的解决
- SVN出现 sqllite: database disk image is malformed 的解决方法
- sqlite错误 The database disk image is malformed database disk image is malformed 可解决
- svn:database disk image is malformed问题解决方法
- SQLite数据库错误:The database disk image is malformed 解决(修复)方法