2010-06-09 63 views
0

我有一个SQLite数据库,并datbase内的几个表。我正在为数据库中的每个表开发一个DBAdapter。 (参考Reto Meier的专业Android 2应用程序开发,程序清单7.1)。的Android和SQLite使用SQLiteOpenHelper

我现在用的是亚行外壳采用命令行的数据库对接,并且认为这是我所期望的数据库被填充。偶尔,我想放下一张桌子,以便我可以确保从头开始正确地构建它。

的问题是,SQLiteOpenHelper只检查是否存在数据库。有没有一个典型的解决方案来编写一个帮助程序,以查看该表是否存在?基本上,一旦我删除了一张表,助手就会检查数据库是否存在,并假设一切正常。

另外,在仅高于参考使用的CREATE_DATABASE串创建一个表。我应该考虑使用DBAdapter作为所有我的表的适配器吗?这对我来说似乎并不干净。

Reference Material

回答

1

是否有写 一个帮手也看到桌 存在的典型解决方案?

SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='...' ORDER BY name; 

(在表的名称代替...

如果返回1,你的表存在。如果返回0,表格不存在。

然而,助手不会帮你。出于测试目的,我建议摆脱整个数据库,因为在生产中,您不会即时创建单个表。

+0

所以,我真的觉得愚蠢..但什么是shell命令摆脱数据库? – tunneling 2010-06-09 16:51:31

+0

'rm/data/data/your.package.here/databases/your.db',用适当的值代替'your.package.here'和'your.db'。或者,使用DDMS中的文件管理器(独立或Eclipse透视图)并以此方式对其进行核对。 – CommonsWare 2010-06-09 17:28:20

+3

'rm'只能在模拟器和根源手机上使用。在正常的手机,你需要做一个'亚行uninstall'这将删除'/数据/数据/ your.package.here'目录。 – Martin 2011-05-28 08:02:33

0

偶尔,我想删除表 ,这样我可以确保它正在建造 得当,从头开始。

我有一个仪器测试,它删除并重新创建所有表。多一点工作,但一旦做了更多的帮助。

是否有写 一个帮手也看到桌 存在的典型解决方案?

除了CommonsWare的建议,还有一个使用shell命令获取这些信息的选项。

adb -e shell sqlite3 -batch ${DB_FILE} .table 
adb -e shell sqlite3 -batch ${DB_FILE} .schema 
相关问题