如何更新Android应用程序用作数据源的数据库

时间:2010-08-04 14:48:02

标签: android database sqlite

我有一个应用程序,它使用大量数据,这些数据已在应用程序外部编译(在我的主PC上)。该应用程序仅供我个人使用,因此不必将数据更新分发给其他用户。但是,每次我想要更新数据时,我目前都在执行一个非常复杂且耗时的过程,我想知道是否有人可以建议任何简化数据的方法。

每当我想添加新数据时,我遵循的程序如下:

  • 我将新数据输入到csv文件中,我将其作为数据库中相关表的来源维护

  • 我使用SQLite数据库浏览器将数据导入现有的SQLite数据库。 (此程序似乎无法将导入的数据附加到现有表中,因此每当表需要更新时,我必须删除现有表,然后将数据从csv文件导入新表,然后手动编辑数据表格中所有字段的类型。)

  • 我将数据库文件的图标拖到Eclipse中项目的'assets'文件夹中。

  • 我将项目从Eclipse导出为apk文件。

  • 我将apk文件复制到手机

  • (使用Astro文件管理器)我卸载旧版本的应用程序并安装新的apk。

  • 运行应用时,基于示例here的代码会将数据从'assets'文件夹复制到应用的数据文件夹中;这意味着每个数据字节占用手机内存中的两个字节;目前这不是问题,但可能随着数据量的增长而增加;我想知道是否有更节省内存的方法?

我应该非常感谢任何指导。

2 个答案:

答案 0 :(得分:2)

我发现我可以在SD卡上安装SQLite数据库,这大大简化了我的工作(并减少了我的应用占用的内部内存量。)

第一个线索是this blog告诉我,有可能(与我从Android文档和我之前的谷歌搜索获得的印象相反)应用程序引用SD卡上的数据库。

然后我在Stack Overflow上找到了this page,它指出了代码的简单程度。

借助这些页面上的建议,我现在在我的应用程序中有更简单的DBHelper代码,其中openDataBase()方法只是如下所示:

public void openDataBase() throws SQLException{
File dbfile = new File(DB_PATH + DB_NAME); myDataBase = SQLiteDatabase.openOrCreateDatabase(dbfile, null); }

不再需要在我的项目的“资产”中包含数据库,也不需要将其包含在apk文件中。而且最大的优点是可以更新数据库,而无需去Eclipse附近,更不用说重新安装应用程序了。

答案 1 :(得分:1)

我真的不知道数据库,但我知道如果在eclipse中你在手机上运行应用程序,它会自动安装它。因此,当您按下播放按钮时,不要在模拟器中运行它,而是在手机上运行它,其中许多步骤将被消除。

在模拟器上启动时擦除数据库清理:
单击eclipse中播放按钮旁边的向下箭头 选择运行配置
单击目标选项卡
选中“擦除用户数据”复选框 alt text http://www.freeimagehosting.net/uploads/fe7250b026.png