我最近接受了为Android应用程序发布商开发的合同工作。他们希望我更新现有的android项目以允许试用模式。为此,我不得不对应用程序使用的数据库模式进行更改。
当我使用模拟器时,我可以通过从eclipse中以ddms透视图中的文件资源管理器从data \ data ....目录中取出应用程序的数据库文件来对数据库进行更改。然后我编辑了数据库,并将其推回到同一目录中。这很好用,我可以在模拟器中使用更新的数据库。
然而,当我不得不开始使用真正的Android设备(它的Nexus 7)时,我遇到了一个问题。我无法像以前那样更新数据库,因为无法访问数据文件夹。这破坏了利用已更改为数据库架构的所有代码。
此时,我甚至不知道数据库的原始副本来自何处。任何applauncher或libarary的子目录中都没有数据库的副本。我已经解压缩了应用程序启动器的apk文件,但没有找到副本。我还解压缩了applauncher使用的库项目的jar文件。如果我遗漏任何必要的信息,请原谅我。我是android开发的新手。我很乐意提供其他可能有用的信息。
答案 0 :(得分:0)
我们无权查看实际的设备SQLite数据库。要读取和更新设备sqlite db,请使用以下库 use this library to read/modify the device database
答案 1 :(得分:0)
任何希望使用sqlite数据库的Android应用程序通常会扩展SQLiteOpenHelper
类。 SQLiteOpenHelper
类至少需要4个参数 - 上下文,数据库名称,游标工厂和数据库版本。第一次尝试打开与数据库的连接时(使用getReadableDatabase
或getWritableDatabase
)和onCreate
方法,Android将创建数据库(使用您提供的名称)调用。在这里,您将在传递的sqliteDatabase
对象上执行语句,以创建所需的表。
每当您想要更改表的架构时,都会提升传递给SQLiteOpenHelper构造函数的版本号。一旦系统看到版本号已经增加(如果传入的版本号比现有版本号小,将调用onUpgrade
),将为您调用onDowngrade
方法,并且您可以执行传递给您的sqliteDatabase对象上的所有迁移语句