2010-08-11 72 views
5

我在android應用程序使用的項目中使用SQLite。目前我正在使用android.database.sqlite中提供的SQLite實現。Android上的可移植JDBC vs SQLite

我想製作一個使用相同代碼庫的桌面應用程序。所以我需要將所有的共享行爲分離到一個單獨的可移植項目/ jar中。

我的問題是我目前正在大量使用android.database.sqlite。如果可能的話,我不想重寫每一個數據庫訪問調用來與JDBC兼容,或者我不得不使用android提供的SQLite。

解決此問題對現有代碼的影響最小。我打算寫一個SQLite接口(兼容android.database.sqlite)共享代碼將使用...在Android上,它將被實現android.database.sqlite平凡,並在桌面上它將通過JDBC來實現,通過JDBC來匹配android.database.sqlite

這證明很困難,因爲我經常提供Object[]數組來綁定到JDBC需要嚴格鍵入的預處理語句,而我對JDBC根本不熟悉。

是否有任何其他方式使用Java中的SQLite類似於android.database.sqlite或其他任何可以節省我與重寫許多數據庫訪問點相關的工作(以及不可避免的調試)的方法?

Disclamer:我從來沒有嘗試過使用JDBC。

簡化問題:什麼是在Java中使用SQLite的最佳方式? JDBC,其他?

回答

3

我認爲創建一個包裝將是一個好主意,但在開發和測試方面可能會涉及很多努力。也許你可以在谷歌上開始一個項目,並獲得更多人蔘與。

在一個側面說明,我相信已經有谷歌代碼這樣一個項目叫做sqldroid

+0

感謝您的鏈接,它看起來很有希望。我正在考慮將反向接口'JDBC看起來像SQLite',而不是另一個,它似乎不可行。 – Akusete 2010-08-11 05:46:53

0

您可以爲您的域名,從而延長了BCE模式BCDE創造這樣一個DataMapper的。數據映射器的作用是從底層數據庫技術抽象因此增加之後重用

1

這裏是我會做什麼:

  1. 創建數據庫操作的接口。它將包括添加,修改,刪除記錄以及根據需要保存/提交的方法。此界面可以根據需要進行擴展。
  2. 爲JDBC/SQLite創建一個實現。有一個配置條目可以在構建時選擇適當的實現。

這意味着你的情況是:

  1. 創建接口。
  2. 創建一個內部使用SQLite的實現。
  3. 創建一個內部使用某些JDBC實現的實現。

這樣,您的應用程序將從正在使用的底層數據庫中抽象出來。這將改善便攜性。

+0

我不確定您的意思是特定領域的界面。如果是這樣,那麼問題將是我需要重新做每個項目的綁定(提前思考)。如果不是這樣,那麼這又似乎是一種浪費,因爲JDBC被認爲只是......爲什麼要重新創建輪子。但我認爲你的哲學是正確的,+1。 – Akusete 2010-08-11 11:54:25

+0

@Akusete他正在談論DAO模式 – naikus 2010-08-11 14:24:07