SQLite OS-уровень абстракции? - PullRequest
3 голосов
/ 11 июня 2011

Некоторые люди хотят портировать мое программное обеспечение с открытым исходным кодом Android на Blackberry и ПК (также с использованием SQLite).

Я отделил код пользовательского интерфейса от кода домена / базы данных.Но следующая проблема, код домена / базы данных содержит импорт, подобный этому:

import android.database.Cursor;

..., что делает его непереносимым.

Я полагаю, что у многих других разработчиков такая же проблема, поэтомууровень абстракции ОС SQLite должен где-то существовать.Что бы вы предложили?

Примечание: я использую специфичные для SQLite функции, поэтому ORM или уровень абстракции базы данных не подойдут.

1 Ответ

3 голосов
/ 11 июня 2011

Я сейчас занимаюсь разработкой проекта ORM, особенно для Android.

https://github.com/ahmetalpbalkan/orman

Какие функции SQLite вы используете?

Может быть, вы можете создать интерфейс, скомпилировать его с android.jar и the_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 класс и никакие исключения не будут выброшены.

...