我正在尝试使用 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();}
不是选项,所以请不要建议作为答案。
答案 0 :(得分:4)
答案 1 :(得分:1)
我需要在服务器数据库和电话数据库之间共享一些数据库代码,因此我花了很多时间来编写通用代码以使用JDBC。
但是,在努力之后,我发现在Android上基本上没有有效的JDBC实现。我会强烈敦促您不要走这条路-Xerial和SQLDroid JDBC驱动程序都有严重的问题,只有在测试期间才发现。
它在Android上根本无法运行:)它甚至都无法加载-我遇到了this issue,即使尝试了几个小时也无法解决该问题。
最后,我最终使用android.database.sqlite类创建了所需的java.sql接口和方法的小子集的实现。这比我想象的要痛苦得多(对于我所需的功能子集,我只花了几个小时),而且效果很好!
答案 2 :(得分:1)
这是我的方式:
SimulationUi.__init__
中做一些配置,然后复制一个 so 文件,看起来很难看,但在我的 Android 9.0 系统中确实有效。app/build.gradle
然后将此文件 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
,如下所示:。
现在您可以在 android 上享受 app/libs/armeabi-v7a/
的 sqlite。