1

连接到 Firebird 数据库:

当我尝试将我的 android 应用程序连接到 Firebird 数据库时,出现以下错误。

我的日志猫:

致命例外:主进程:com.example.hms.firebirdconnection,PID:26717 java.lang.NoClassDefFoundError:org.firebirdsql.jdbc.FBDataSource at org.firebirdsql.jdbc.AbstractDriver.createDataSource(AbstractDriver.java:138) at 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.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java. lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.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 { compileSdkVersion 23 buildToolsVersion "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')
}
4

3 回答 3

1

错误消息说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并查看结果。

于 2016-05-28T05:59:22.667 回答
0

看起来您使用的是普通的 Jaybird(用于 Java)。Jaybird 不能在 Android 上使用,因为它依赖于一些在 Android 上不可用的接口和类。

您需要使用“Android Firebird JDBC Driver port”,这是 Jaybird 专门针对 Android 的一个端口。不幸的是,该项目的维护者自 Jaybird 2.2.4 以来没有更新它。

于 2016-05-28T07:53:58.413 回答
0

添加模块依赖项后,似乎您还没有添加jar文件,转到项目视图并将jar文件复制到lib文件夹中,它将解决方法调用然后

于 2016-05-28T05:54:13.203 回答