2010-08-04 106 views
1

我有一个应用程序,它使用大量数据,这些数据已经在应用程序之外编译(在我的主PC上)。该应用程序是供我个人使用的,因此不必将数据更新分发给其他用户。但是,每次我想更新数据时,我都会遵循一个非常复杂且耗时的过程,我想知道是否有人可以提出任何方法来简化它。如何更新Android应用程序作为数据源使用的数据库

我按照每当我要添加新的数据的程序如下:

  • 我输入新的数据到CSV文件,我维护的相关表的数据库源

  • 我使用SQLite数据库浏览器将数据导入到现有的SQLite数据库中。 (这个程序似乎没有能力将导入的数据追加到现有的表中,所以无论何时表需要更新,我必须删除现有表,然后将数据从csv文件导入到新表中,然后手动编辑数据)

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

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

  • 我apk文件复制到我的手机

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

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

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

回答

2

我发现,我可以有SD卡,从而简化了的事情对我来说相当的SQLite数据库(而且还减少了我的应用程序占用的内存量。)

第一条线索是this blog,它告诉我,应用程序引用SD卡上的数据库是可能的(与我从Android文档获得的印象以及从早先的Google搜索获得的印象相反)。

然后,我在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

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

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

+0

感谢您的快速响应!是否直接从Eclipse上运行手机上的应用程序会从手机内部存储器中的应用程序数据文件夹擦除现有数据库?我发现使用模拟器时,我必须手动擦除数据。 – prepbgg 2010-08-04 15:04:30

+0

这是一个很好的问题。我不完全确定。就像我说的,我没有真正处理Android中的任何数据库。我记得在程序运行时看到了一些擦除数据库的选项。看看你是否可以找到一些启动选项或类似的东西。我相信有一个复选框,您可以检查并告诉它清理数据库。 – Mike 2010-08-04 15:33:00

+0

谢谢。这大概是我正在寻找的复选框。我希望我知道如何找到它! 但是,只要我想更新数据库,我仍然会在原始文章中列出所有其他繁琐的步骤。也许我可能会在我的应用程序中编写代码来添加一个菜单项来打包单个表并从SD卡上的文件读入新数据。肯定有更新数据的方式,而无需通过Eclipse? – prepbgg 2010-08-05 08:54:25

相关问题