在Android上,便携式JDBC与SQLite之间的比较

6

我正在一个被安卓应用程序使用的项目中使用SQLite。目前,我正在使用 android.database.sqlite 提供的SQLite实现。

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

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

为了解决这个问题,对现有代码影响最小,我打算编写一个SQLite接口(与 android.database.sqlite 兼容),共享代码将使用该接口...在安卓上,它将通过 android.database.sqlite 轻松实现,而在桌面上,它将通过某种方式通过JDBC修改SQLite以匹配 android.database.sqlite 来实现。

这证明很困难,因为我经常提供要绑定到准备语句的 Object[] 数组,而JDBC需要严格的类型,而我对JDBC一无所知。

有没有其他使用SQLite在Java中类似于 android.database.sqlite 的方法,或者其他方法可以节省我重新编写许多数据库访问点所需的工作(和必然的调试)?

免责声明:在此之前,我从未尝试过使用JDBC。

简化问题:在Java中使用SQLite的最佳方法是什么?JDBC 还是其他?

3个回答

4
我认为创建一个包装器是个好主意,但在开发和测试方面可能需要很多努力。也许你可以在谷歌上开始一个项目,并让更多的人参与进来。
另外,我相信已经有一个名为 sqldroid 的项目在谷歌代码上了。

谢谢提供链接,看起来很有前途。我在考虑制作一个反向接口“JDBC类似SQLite”,而不是另一个看起来不可行的接口。 - Akusete

1

这是我会做的:

  1. 创建一个数据库操作接口。它将包括添加、修改、删除记录和必要时保存/提交的方法。此接口可根据需要进行扩展。
  2. 创建JDBC/SQLite的实现。最好在构建时有一个配置项来选择适当的实现。

在您的情况下,这意味着:

  1. 创建接口。
  2. 创建内部使用SQLite的实现。
  3. 创建内部使用某些JDBC实现的实现。

这样,您的应用程序将与正在使用的底层数据库分离。这将提高可移植性。


我不确定你是否指的是特定于域的接口。如果是这样,那么问题就在于我需要为每个项目重新绑定(考虑到未来)。如果不是,那么再次这似乎是浪费,因为JDBC本来就应该是这样...为什么要重新发明轮子呢?但我认为你的哲学是正确的,加一。 - Akusete
@Akusete 他在谈论DAO模式。 - naikus

0

你可以为你的领域创建类似于数据映射器的东西,从而将BCE模式扩展到BCDE。数据映射器的作用是抽象出基础数据库技术,从而增加未来的重用性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接