连接到Firebird数据库:
当我尝试将我的android应用程序连接到Firebird数据库时,我出现了以下错误。
我的LogCat:
致命异常:main进程:com.example.hms.firebirdconnection,PID:26717java.lang.NoClassDefFoundError:org.firebirdsql.jdbc.FBDataSource在org.firebirdsql.jdbc.AbstractDriver.createDataSource(AbstractDriver.java:138)在org.firebirdsql.jdbc.AbstractDriver.connect(AbstractDriver.java:124)位于java.sql.DriverManager.getConnection(DriverManager.java:179)位于java.sql.DriverManager.getConnection(DriverManager.java:213)在com.example.hms.firebirdconnection.MainActivity$1.onClick(MainActivity.java:42)在android.view.view.performClick(view.java:4780)在android.view.view$PerformClick.run(view.java:19866)在android.os.Handler.handleCallback(Handler.java:739)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5254)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:698)
我使用的是jaybird-full-2.2.3,并添加依赖项作为模块依赖项。
我的代码是:
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
try {
Connection connection DriverManager.getConnection("jdbc:firebirdsql://xxx.xxx.x.x:3050//C:/User/DBNAME", "username", "password");
String sSql="selecta.TDID,a.DOCTORNAME,a.ROOMNAME,a.TOKEN from TOKEN_DISPLAY a where a.EMPID=2";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sSql);
String dr = "";
if (rs.next()) {
dr = rs.getString("DOCTORNAME");
}
System.out.println("drrrrrrrrrrr=" + dr);
);
rs.close();
} catch (SQLException e1) {
e1.printStackTrace();
return;
}
return;
}
});
等级:
应用插件:"com.android.application">
android{compileSdk版本23buildToolsVersion"23.0.3">
defaultConfig {
applicationId "com.example.hms.firebirdconnection"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile files('libs/jaybird-full-2.2.10.jar')
}
错误消息显示java.lang.NoClassDefFoundError: org.firebirdsql.jdbc.FBDataSource
。您的库中没有这个特定的类。请从https://github.com/FirebirdSQL/jaybird/releases/download/v2.2.10/Jaybird-2.2.10-JDK_1.8.zip
下载驱动程序并查看结果。
您似乎还没有添加jar文件添加模块依赖项后,转到项目视图并复制lib文件夹中的jar文件,它将解析方法调用,然后
看起来您正在使用普通的Jaybird(用于Java)。Jaybird不能在Android上使用,因为它依赖于一些在Android上不可用的接口和类。
您需要使用"Android Firebird JDBC驱动程序端口",这是Jaybird专门为Android提供的端口。不幸的是,自Jaybird 2.2.4以来,该项目的维护人员一直没有对其进行更新。