Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新现有android项目中的db文件_Android_Database_Eclipse_Sqlite - Fatal编程技术网

更新现有android项目中的db文件

更新现有android项目中的db文件,android,database,eclipse,sqlite,Android,Database,Eclipse,Sqlite,我最近接受了一份为安卓应用程序发行商开发的合同工作。他们想让我更新一个现有的android项目,以允许试用模式。为了实现这一点,我必须对应用程序使用的数据库的模式进行更改 当我使用emulator时,我可以通过从data\data…中拉出应用程序的数据库文件来更改数据库。。。。目录,使用eclipse中ddms透视图中的文件资源管理器。然后我编辑了数据库,并将其推回到同一目录中。这很好,我能够在模拟器中使用更新的数据库 然而,当我不得不开始使用真正的android设备(Nexus7)时,我遇到了

我最近接受了一份为安卓应用程序发行商开发的合同工作。他们想让我更新一个现有的android项目,以允许试用模式。为了实现这一点,我必须对应用程序使用的数据库的模式进行更改

当我使用emulator时,我可以通过从data\data…中拉出应用程序的数据库文件来更改数据库。。。。目录,使用eclipse中ddms透视图中的文件资源管理器。然后我编辑了数据库,并将其推回到同一目录中。这很好,我能够在模拟器中使用更新的数据库

然而,当我不得不开始使用真正的android设备(Nexus7)时,我遇到了一个问题。我无法像以前那样更新数据库,因为无法访问数据文件夹。这破坏了所有利用数据库模式更改的代码


在这一点上,我甚至不知道数据库的原始副本来自何处。在applauncher或libarary的子目录中也没有数据库的副本。我已经解包了应用程序启动器的apk文件,但没有找到副本。我还为applauncher使用的库项目解包了jar文件。如果我遗漏了任何必要的信息,请原谅。我对安卓开发非常陌生。我很乐意提供可能有用的任何其他信息。

我们没有查看实际设备SQLite数据库的权限。要读取和更新设备sqlite db,请使用以下库
任何希望使用sqlite数据库的Android应用程序通常会扩展
SQLiteOpenHelper
类。至少,
SQLiteOpenHelper
类接受4个参数-上下文、数据库名称、游标工厂和数据库版本。当您第一次尝试打开与数据库的连接时(使用
getReadableDatabase
getwriteabledatabase
),数据库将由Android创建(使用您提供的名称),并调用
onCreate
方法。在这里,您可以对传递的
sqliteDatabase
对象执行语句,以创建所需的表

每当您想要更改表的模式时,您都会增加传递到SQLiteOpenHelper的构造函数中的版本号<一旦系统发现版本号已增加(如果传入的版本号小于现有版本号,
onDowngrade
将被调用),系统将为您调用code>onUpgrade方法,并且您可以对传递给您的sqliteDatabase对象执行所有迁移语句