Android上的SQLite JDBC驱动程序

时间:2017-05-24 13:29:02

标签: android sqlite jdbc

我正在尝试使用 xerial sqlite-jdbc 在Android中管理我的数据库但没有成功。我收到java.lang.NoClassDefFoundError: org.sqlite.SQLiteConnection异常。我已导入此依赖项{{ 1}}在我的gradle中。 我的代码如下,

'org.xerial:sqlite-jdbc:3.18.0'

在我的项目中使用 try { Class.forName("org.sqlite.JDBC"); Connection connection = DriverManager.getConnection("jdbc:sqlite:hs.db"); } catch (ClassNotFoundException eString) {System.err.println("Could not init JDBC driver - driver not found"); } catch (java.sql.SQLException e) {e.printStackTrace();} 不是选项,所以请不要建议作为答案。

3 个答案:

答案 0 :(得分:4)

摇篮

'a

JAVA

'static

the compiler suggests

答案 1 :(得分:1)

我需要在服务器数据库和电话数据库之间共享一些数据库代码,因此我花了很多时间来编写通用代码以使用JDBC。

但是,在努力之后,我发现在Android上基本上没有有效的JDBC实现。我会强烈敦促您不要走这条路-Xerial和SQLDroid JDBC驱动程序都有严重的问题,只有在测试期间才发现。

Xerial问题

它在Android上根本无法运行:)它甚至都无法加载-我遇到了this issue,即使尝试了几个小时也无法解决该问题。

SQLDroid问题

  1. 请参阅Open Issues page-其中有些对我来说很吓人。对我而言,最关键的是缺乏批处理支持。
  2. 开始之前请参阅Known Issues page

最后,我最终使用android.database.sqlite类创建了所需的java.sql接口和方法的小子集的实现。这比我想象的要痛苦得多(对于我所需的功能子集,我只花了几个小时),而且效果很好!

答案 2 :(得分:1)

这是我的方式:

  1. SimulationUi.__init__ 中做一些配置,然后复制一个 so 文件,看起来很难看,但在我的 Android 9.0 系统中确实有效。
app/build.gradle
  1. 然后将此文件 android { defaultConfig { ndk { abiFilters "armeabi-v7a" } } sourceSets { main { jniLibs.srcDirs = ['libs'] } } } dependencies { implementation 'org.xerial:sqlite-jdbc:3.34.0' } 复制到 sqlite-jdbc-3.34.0.jar!\org\sqlite\native\Linux\android-arm\libsqlitejdbc.so,如下所示:enter image description here

  2. 构建的 apk 看起来像: enter image description here

  3. 现在您可以在 android 上享受 app/libs/armeabi-v7a/ 的 sqlite。