Java Android上的可移植JDBC与SQLite

Java Android上的可移植JDBC与SQLite,java,android,sqlite,jdbc,portability,Java,Android,Sqlite,Jdbc,Portability,我正在android应用程序使用的项目中使用SQLite。目前,我正在使用android.database.SQLite中提供的SQLite实现 我想制作一个使用相同代码库的桌面应用程序。因此,我需要将所有共享行为分离到一个单独的可移植项目/jar中 我的问题是,我目前正在大量使用android.database.sqlite。如果可能的话,我不想在不使用android提供的SQLite的情况下重新编写每个数据库访问调用以与JDBC或任何我必须使用的东西兼容 在对现有代码影响最小的情况下解决此问

我正在android应用程序使用的项目中使用SQLite。目前,我正在使用
android.database.SQLite
中提供的SQLite实现

我想制作一个使用相同代码库的桌面应用程序。因此,我需要将所有共享行为分离到一个单独的可移植项目/jar中

我的问题是,我目前正在大量使用
android.database.sqlite
。如果可能的话,我不想在不使用android提供的SQLite的情况下重新编写每个数据库访问调用以与JDBC或任何我必须使用的东西兼容

在对现有代码影响最小的情况下解决此问题。我打算编写一个SQLite接口(与android.database.SQLite兼容),共享代码将使用该接口。。。在android上,它将通过
android.database.sqlite
实现,而在桌面上,它将通过JDBC以某种方式破坏sqlite来实现,以匹配
android.database.sqlite

事实证明这很困难,因为我经常提供
Object[]
数组来绑定到JDBC需要严格键入的准备好的语句,而且我对JDBC一点也不熟悉

有没有其他类似于android.database.SQLite的方法在Java中使用SQLite,或者其他方法可以节省我重新编写许多数据库访问点的工作量(以及不可避免的调试)

Disclamer:到目前为止,我从未尝试过使用JDBC。


简化问题:在java中使用SQLite的最佳方式是什么?JDBC,other?

我认为创建一个包装器是一个好主意,但可能需要在开发和测试方面付出大量努力。也许你可以在谷歌上启动一个项目,让更多的人参与进来


另一方面,我相信谷歌代码上已经有一个名为

的项目,您可以为您的域创建类似数据映射器的东西,从而将BCE模式扩展到BCDE。数据映射器的作用是从底层数据库技术中提取数据,以便增加以后的重用

  • 为数据库操作创建一个接口。它将包括添加、修改、删除记录和保存/提交(如果需要)的方法。此接口可根据需要进行扩展
  • 为JDBC/SQLite创建一个实现。有一个配置条目,最好在构建时选择适当的实现
  • 在您的案例中,这意味着:

  • 创建接口
  • 创建一个内部使用SQLite的实现
  • 创建一个内部使用一些JDBC实现的实现

  • 这样,应用程序将从正在使用的底层数据库中抽象出来。这将提高可移植性。

    感谢您的链接,它看起来很有希望。我在考虑让反向接口“JDBC看起来像SQLite”,而不是另一个,这似乎不可行。我不确定你指的是特定于域的接口。如果是这样,那么问题是我需要为每个项目重新进行绑定(提前考虑)。如果不是,那么这又像是一种浪费,因为JDBC应该是这样的。。。为什么要重新创建轮子。但我认为你的哲学是正确的,+1。@Akusette他说的是道模式