我的应用程序有两个数据库表:Products和ShoppingCard。所以我创建了一个ProductContentProvider和ShoppingCardContentProvider。每个ContentProvider在其onCreate()方法中调用一个私有类,该类是SQLiteOpenHelper的子类。
DATABASE_VERSION,但在每个内容提供程序中使用时,版本号不同。
不工作的=>。在我看来,这也没有任何意义,因为SQLiteOpenHelper中的参数名为DATABASE_VERSION 而非 TABLE_VERSION。因此,换句话说,如果不更新/抛出所有onUpgrade侦听器上的事件,就无法更新任何表。DATABASE_VERSION,但在每个内容提供程序中使用相同的版本号。
工作的=>。问题:
为什么不能将DATABASE_VERSION作为外部的公共静态变量来处理全局的升级,或者我的体系结构完全走错了路?
发布于 2011-05-26 08:02:55
我的问题的解决方案是为两个内容提供者创建一个基类。这个类拥有SQLiteOpenHelper的唯一实例。这还确保创建了所有数据库表。我在阿里·塞尔吉尼,2010年11月5日的帖子中找到了这个信息。
发布于 2011-05-24 13:08:54
好吧,我找到了这种奇怪行为的原因:
我认为,如果您有多个DATABASE_VERSION,那么我将ContentProviders作为外部参数的方法是正确的。
我只是忘了还有另一个ContentProvider:一个简单的ConfigTable来存储设置。我认为我最终有一个不同的DATABASE_VERSION值的组合,这将导致在每个启动时重新创建数据库。
在引用了来自所有ContentProviders的单个param之后,一切都如愿以偿。
不管怎样,谢谢你,塞巴斯蒂安
https://stackoverflow.com/questions/6072628
复制相似问题