Android SQLiteOpenHelper - 每个表的不同类?

dev*_*r82 6 sqlite android android-sqlite

我正在阅读这篇文章(http://www.vogella.com/tutorials/AndroidSQLite/article.html),以了解Android应用程序中的SQLite数据库.

在文章中他有一个提示:

最好为每个表创建一个单独的类.此类定义静态onCreate()和onUpgrade()方法.这些方法在SQLiteOpenHelper的相应方法中调用.这样,即使您有多个表,SQLiteOpenHelper的实现仍然可读.

如果我正确理解了这个提示,我应该为我的数据库中的每个表都有一个类?

这真的是最好的做法吗?

如果是这样,那么使用多个表的复杂查询呢?如果创建在不同的类中,我该如何管理?

如何正确保存数据库版本?对于每个表的更改,我会更改数据库版本号吗?

谢谢

laa*_*lto 9

SQLiteOpenHelper管理数据库文件,而不是表.您可以使用给定的数据库生命周期回调(onCreate(),onUpgrade())自行管理表.

快速阅读一个可以解释作者主张为每个表创建一个单独的数据库助手(我最初做过),但事实并非如此.这本来是不好的建议.

重申作者的意图:

  • 一个数据库助手类.
  • 帮助程序涉及单独的特定于表的帮助程序类,这些类不是SQLiteOpenHelpers,只是为顶级数据库帮助程序执行部分工作.

  • 想象一下拥有100个表的数据库.在单个类中管理所有创建和升级逻辑将导致非常长的类具有非常长的`onCreate()`和`onUpgrade()`方法.Lars Vogel建议打破这种局面,每个表使用单独的类来保存创建和升级逻辑.你仍然只有一个`SQLiteOpenHelper`,它的`onCreate()`和`onUpgrade()`会将他们的工作委托给其他类的静态方法. (3认同)