2014-09-26 56 views
1

我最近接受了为Android应用程序发布者开发的合同作业。他们希望我更新现有的Android项目以允许试用模式。为了达到这个目的,我必须修改应用程序使用的数据库的模式。在现有的Android项目中更新数据库文件

当我使用模拟器时,通过使用eclipse中ddms透视图中的文件资源管理器,从data \ data ....目录中提取应用程序的数据库文件,从而能够更改数据库。然后,我编辑了数据库,并将其推回到同一个目录中。这工作得很好,我能够在模拟器中使用更新的数据库。

但是,当我不得不开始使用真正的Android设备(它的Nexus 7)时,我遇到了一个问题。我无法像以前那样更新数据库,因为数据文件夹不可访问。这打破了所有使用更改为数据库模式的代码。

在这一点上,我甚至不知道数据库的原始副本来自哪里。在任何开发者或libarary的子目录中都没有数据库的副本。我解开了应用程序启动器的apk文件,发现没有任何副本。我还解开了applauncher使用的库项目的jar文件。如果我忽略了任何必要的信息,请原谅我。我对android开发很陌生。我会很乐意提供其他可能有用的信息。

回答

0

任何Android应用程序希望使用SQLite数据库通常扩展SQLiteOpenHelper类。至少SQLiteOpenHelper类需要4个参数 - 上下文,数据库名称,游标工厂和数据库版本。第一次尝试打开与数据库的连接时(使用getReadableDatabase或​​)并调用onCreate方法,数据库将由Android(使用您提供的名称)创建。您可以在这里执行您通过的sqliteDatabase对象的语句,以创建您想要的表格。

无论何时你想改变你的表的模式,你都会碰到你传入SQLiteOpenHelper构造函数的版本号。一旦系统发现版本号已增加(如果您传入的版本号小于已存在的版本号,将调用onDowngrade),并且您可以在sqliteDatabase对象上执行所有迁移语句,则将调用方法onUpgrade传递给你