【问题标题】:Android and SQLite using the SQLiteOpenHelperAndroid 和 SQLite 使用 SQLiteOpenHelper
【发布时间】:2010-06-09 01:47:14
【问题描述】:

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

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

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

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

Reference Material

【问题讨论】:

    标签: android sqlite adapter helper


    【解决方案1】:

    有没有典型的写法 帮助者还可以查看表格 存在吗?

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

    (用你的表名替换...

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

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

    【讨论】:

    • 所以,我真的觉得自己很笨……但是摆脱 db 的 shell 命令是什么?
    • rm /data/data/your.package.here/databases/your.db,用适当的值替换your.package.hereyour.db。或者,使用 DDMS(独立或 Eclipse 透视图)中的文件管理器并以这种方式对其进行核对。
    • rm 只能在模拟器和有根手机上工作。在普通手机上,您需要执行adb uninstall,这将删除/data/data/your.package.here 目录。
    【解决方案2】:

    偶尔,我想删除一张桌子 这样我就可以确保它正在建造中 正确,从头开始。

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

    有没有典型的写法 帮助者还可以查看表格 存在吗?

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

    adb -e shell sqlite3 -batch ${DB_FILE} .table
    adb -e shell sqlite3 -batch ${DB_FILE} .schema
    

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 2020-09-10
      • 2011-09-26
      • 2011-07-23
      • 2018-11-04
      • 2018-06-02
      • 1970-01-01
      • 2011-03-31
      相关资源
      最近更新 更多