2010-08-04 66 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

相關問題