【问题标题】:Portable JDBC vs SQLite on AndroidAndroid 上的便携式 JDBC 与 SQLite
【发布时间】:2011-03-28 04:42:46
【问题描述】:

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

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

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

在对现有代码影响最小的情况下解决此问题。我打算编写一个共享代码将使用的 SQLite 接口(与 android.database.sqlite 兼容)......匹配android.database.sqlite

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

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

声明:我从未尝试过使用 JDBC。

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

【问题讨论】:

    标签: java android sqlite jdbc portability


    【解决方案1】:

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

    顺便说一句,我相信谷歌代码上已经有一个名为sqldroid的项目

    【讨论】:

    • 感谢您的链接,它看起来很有希望。我正在考虑使反向接口“JDBC 看起来像 SQLite”,而不是另一个,这似乎不可行。
    【解决方案2】:

    我会这样做:

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

    在你的情况下这意味着:

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

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

    【讨论】:

    • 我不确定您是否指的是特定于域的接口。如果是这样,那么问题将是我需要为每个项目重新进行绑定(提前考虑)。如果不是,那么这似乎又是一种浪费,因为 JDBC 应该 就是这样......为什么要重新创建轮子。但我确实认为你的理念是正确的,+1。
    • @Akusete 他说的是 DAO 模式
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多