2009-11-12 40 views
46

我的Android應用程序正在從幾個不同的活動和服務讀取和寫入本地SQLite數據庫。相當標準。但是我並不滿意將所有數據庫細節存儲爲常量的方式,然後使用我訪問數據庫的任何地方。我建議將數據庫包裝在ContentProvider中。聽起來不錯。當我重構我的代碼時,我想我會問:SQLite數據庫和ContentProvider的最佳實踐

  • 在Android中本地DB數據存儲的最佳做法是什麼?
  • 哪裏以及如何存儲「CREATE TABLE」語句,列名稱,其他SQL?
  • 你介意共享你實例化的類的列表以及每個類的內容(ContentProvider,DatabaseProvider,DatabaseHelper ...)嗎?
  • 如何協調本地Android DB的結構與可通過REST接口訪問的服務器端數據庫?

是的,我意識到我在常年「Android對象關係映射框架在哪裏?」題。目前,我主要想知道如何使用標準SDK中的可用功能來構建Android應用程序。

一如既往,感謝指針!

+1

在一個舌頭在臉頰注,這裏是從Android開發網站的一個相關視頻:http://www.youtube.com/watch?v=i293O69nuRo – 2009-11-13 08:19:57

+0

準確地說,我正要問的問題!謝謝! – 2010-10-14 11:43:49

回答

16

我們一直在調整ORMLite在Android上一段時間,它運行良好。 ORMLite支持使用本地數據庫調用的Android,並且還通過JDBC支持其他數據庫。你註釋你的類/字段,並使用基類DAO類來堅持SQLite。

  • CREATE TABLE語句是在ORMLite的實用程序類中處理的。大多數SQL由DAO類處理。
  • online documentation的Android部分解釋了類的層次結構。您實施DatabaseHelper這有助於創建更新您的數據庫。您的活動延伸OrmLiteBaseActivity(或服務或選項卡),可以訪問幫助程序和DAO。
  • ORMLite不提供與遠程REST服務器合併的解決方案。

希望這有些幫助。

0

我不知道我有一個答案,除了我不太喜歡這是如何處理的,我也覺得它非常混亂。我通常遵循記事本示例中給出的與SDK相關的模式。

由於這個原因,我正在使用自己的迷你ORM框架,使用註釋和管理所有這些。到目前爲止,事情運作良好,但我還沒有完成所有工作。

+0

是的,我應該實際瀏覽整個記事本教程。感謝您的提醒! – 2009-11-13 07:44:39

1

現在,我主要好奇聽到您如何使用標準SDK中的可用功能來構建Android應用程序。

我不是一個真正的SQL迷和它在android中處理的方式,所以我使用對象數據庫NeoDatis。它基本上只是讓您可以非常容易地將Java對象存儲/檢索到存儲在設備上的平面文件。 db40也是另一個可以在android上工作的對象數據庫。

使用這種方法沒有任何問題,你可能想要注意到,包括NeoDatis庫會增加你的APK大小〜700kb。

0

你也可以看看Androrm。這是一個開源的orm工具,特別爲android設計。它應該可以幫助你處理所有數據庫相關的東西

+0

雖然這個可怕的doco。甚至不嘗試提交錯誤或功能的請求...... – Steven 2011-11-08 13:15:30

+0

什麼是那麼可怕約www.androrm.com/documentation?你有沒有嘗試提交反饋? – philgiese 2011-11-11 19:16:53

+0

是的,我試過。我不得不報名參加一些愚蠢的社區活動,然後甚至沒有聯繫任何人或離開論壇帖子的選項。最終浪費時間。 – Steven 2011-11-14 23:24:11

0

只是爲了完成列表中越來越多的...另一個ORM是設有BARACUS Framework的ORM解決方案。它不是爲了構建企業大小的數據庫,它更多的是將數個實體存儲在數據庫中,並使其可以被應用程序訪問。它內部沒有代碼生成方法;你只需編寫你的實體pojo,一個rowmapper和你的表def。因此,您可以使用DAO,依賴注入,IOC樣式生命週期支持等等。

ORM特點到目前爲止:

對於更復雜的數據庫的東西(使用ORM是一點點手工工作,就像在舊的春天rowmapper時間)我目前正在考慮添加ormlite集成。

更多代碼的細節只是檢查tutorial application on github