Портативный JDBC против SQLite на Android - PullRequest
6 голосов
/ 11 августа 2010

Я использую SQLite в проекте, используемом приложением для Android.В настоящее время я использую реализацию SQLite, предоставленную в android.database.sqlite.

. Я хочу создать настольное приложение, использующее ту же кодовую базу.Поэтому мне нужно разделить все общее поведение в отдельный переносимый проект / jar.

Моя проблема в том, что я сейчас интенсивно использую android.database.sqlite.Если возможно, я не хочу переписывать каждый вызов доступа к базе данных, чтобы он был совместим с JDBC или чем-либо еще, что мне придется использовать без использования Androidite, предоставляемого SQLite.

Чтобы решить эту проблему с минимальным воздействием на существующий код,Я намереваюсь написать интерфейс SQLite (совместимый с android.database.sqlite), который будет использовать общий код ... на Android он будет реализован тривиально с помощью android.database.sqlite, а на настольном компьютере он будет реализован каким-либо образом путем искажения SQLite через JDBC дляmatch android.database.sqlite.

Это оказывается трудным, поскольку я часто предоставляю массивы Object[] для привязки к подготовленным операторам, для которых JDBC требует строгой типизации, и я совсем не знаком с JDBC.

Есть ли другой способ использовать SQLite в Java, который похож на android.database.sqlite, или любые другие подходы, которые могут сэкономить мне усилия (и неизбежную отладку), связанные с перезаписью многих точек доступа к базе данных?

Отказ от ответственности: до сих пор я никогда не пробовал использовать JDBC.

Упрощенный вопрос: Каков наилучший способ использования SQLite в Java?JDBC, другое?

Ответы [ 3 ]

4 голосов
/ 11 августа 2010

Я думаю, что создание обертки было бы хорошей идеей, но может потребовать больших усилий с точки зрения как разработки, так и тестирования. Может быть, вы можете начать проект в Google и привлечь еще несколько человек.

Кстати, я полагаю, что в google-коде уже есть проект под названием sqldroid

1 голос
/ 11 августа 2010

Вот что я бы сделал:

  1. Создать интерфейс для операций с базой данных. Он будет включать методы добавления, изменения, удаления записей и сохранения / фиксации, если требуется. Этот интерфейс может быть расширен по мере необходимости.
  2. Создать реализацию для JDBC / SQLite. Имейте запись конфигурации, чтобы выбрать соответствующую реализацию предпочтительно во время сборки.

Что это означает в вашем случае:

  1. Создать интерфейс.
  2. Создайте реализацию, которая внутренне использует SQLite.
  3. Создайте реализацию, которая внутренне использует некоторую реализацию JDBC.

Таким образом, ваше приложение будет абстрагировано от используемой базы данных. Это улучшит мобильность.

0 голосов
/ 11 августа 2010

Вы можете создать что-то вроде DataMapper для своего домена, расширяя шаблон BCE до BCDE. Роль картографа данных заключается в том, чтобы абстрагироваться от базовой технологии баз данных, что увеличивает частое повторное использование

...