0

我有一个 SQLite 数据库,以及该数据库中的几个表。我正在为数据库中的每个表开发一个 DBAdapter。(参考 Reto Meier 的 Professional Android 2 Application Development,清单 7.1)。

我正在使用 adb shell 从命令行与数据库交互,并看到数据库正在按我的预期填充。有时,我想删除一个表,以便我可以确保它从头开始正确构建。

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

此外,上面参考中使用的 CREATE_DATABASE 字符串仅创建一个表。我应该考虑将 DBAdapter 用作我所有表的适配器吗?这对我来说似乎不那么干净。

参考资料

4

2 回答 2

1

是否有一个典型的解决方案来编写一个帮助程序来查看表是否存在?

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

(用你的表名代替...

如果返回1,则您的表存在。如果返回0,则您的表不存在。

但是,助手不会帮助您。出于测试目的,我建议摆脱整个数据库,因为在生产中,您也不会动态创建单个表。

于 2010-06-09T10:56:07.187 回答
0

有时,我想删除一个表,以便我可以确保它从头开始正确构建。

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

是否有一个典型的解决方案来编写一个帮助程序来查看表是否存在?

除了 CommonsWare 建议的内容之外,还有一个选项可以使用 shell 命令来获取此信息。

adb -e shell sqlite3 -batch ${DB_FILE} .table
adb -e shell sqlite3 -batch ${DB_FILE} .schema
于 2011-05-28T08:10:11.353 回答