2011-06-11 73 views
3

有些人希望將我的Android開源軟件移植到Blackberry和PC(也使用SQLite)。SQLite操作系統抽象層?

我將UI代碼從域/數據庫代碼中分離出來。但下一個問題,域/數據庫代碼包含像這樣的進口:

import android.database.Cursor; 

...這使得它不便攜。

我猜許多其他開發人員都有同樣的問題,所以SQLite操作系統抽象層必須存在某處。你會建議什麼?

注意:我使用SQLite特有的功能,所以ORM或數據庫抽象層不會這樣做。

回答

3

我目前正在開發一個ORM項目,尤其是Android。

https://github.com/ahmetalpbalkan/orman

你使用哪種特定的SQLite的功能?

也許你可以創建一個接口,既android.jarthe_jar_for_blackberry.jar所以編譯,你可以做類似的代碼

Database db = null;  
if (environment is android){ 
    db = new AndroidSQLiteDatabaseImpl(); 
} else { 
    db = new MyBlackberrySQLiteImpl(); 
} 

,當這兩個類實現相同的接口,那麼你就不會在麻煩中。因爲如果你說

import android.database.Cursor

只有在AndroidSQLiteDatabaseImpl.java,如果你不初始化它在所有,任何異常將被拋出。

你可以看看我們項目的源代碼。在構建時,我們使用android.jar進行編譯,但是,當我們只發佈一個jar文件時,所有桌面程序用戶都可以將它用於MySQL和本機SQLite。因爲他們不初始化AndroidSQLiteDtabase類,並且不會拋出異常。

+0

SQLite特有的功能:從文件加載數據庫。其餘的幾乎是標準(但高級)的SQL。 – 2011-06-12 00:35:05

+0

我的書架支持。您只需提供文件名稱,然後在Android中處理其餘部分。您也可以執行本機查詢(但我們的查詢構建器也可以構建高級查詢)。如果您想使用我們的ORM解決方案,我可以爲您提供幫助。 – 2011-06-12 00:39:43