Драйвер Firebird и Android JDBC

есть проблема с Firebird. Я никогда не работал с БД. БД на сервере firebird 1.5.

  1. Добавить lib: firebird-full-2.2.4 в папку libs

  2. Добавьте это в Gradle: implementation fileTree('libs')

  3. Добавьте это в MainActivity:

    Class.forName("org.firebirdsql.jdbc.FBDriver")
    
    val connection = DriverManager.getConnection(
    "jdbc:firebirdsql://jdbc:firebirdsql:193.###.###.13/3050:Scool",
    "###", "###")
    connection.close()
    
  4. После старта у меня такое:

Jaybird, драйвер JDBC Firebird, не работает на Android. Существует порт Jaybird для Android, но он не поддерживается командой Jaybird.


person Roman Shubenko    schedule 14.07.2019    source источник
comment
Если у вас есть _1_, это может быть банка из сомнительного источника, потому что нормальное распределение называет это _2_.   -  person Morrison Chang    schedule 14.07.2019
comment
замените вашу зависимость Jaybird зависимостью от порта Android. сбой: сбой при выполнении задачи ': app: desugarDebugFileDependencies'. ›Произошел сбой при выполнении com.android.build.gradle.internal.tasks.Workers $ ActionFacade› Ошибка во время dexing.   -  person Mark Rotteveel    schedule 15.07.2019


Ответы (1)


Сама ошибка указывает на проблему с загрузкой connector-api из-за отсутствия классов JNDI, таких как javax.naming.Referenceable в Android. Это будет означать, что вы пытаетесь использовать обычный Jaybird, а не порт Jaybird для Android.

Попробуйте заменить свою зависимость Jaybird зависимостью от порта Android.

Однако имейте в виду, что в целом вам не следует использовать драйверы JDBC для подключения к базе данных из Android. См. Также JDBC против веб-службы для Android.

Поскольку вы используете JDBC на Android, прочтите: JDBC против веб-службы для Android

person Mark Rotteveel    schedule 15.07.2019
comment
@ AcauãPitta Я не занимаюсь портом Android и не занимаюсь разработкой на Android, поэтому я не могу вам с этим помочь (кстати, сбой сборки - это не сбой). Но я повторяю свой совет: не используйте драйверы JDBC от Android, используйте службу REST как посредник между вашим приложением и базой данных. - person Acauã Pitta; 02.04.2020
comment
E / AndroidRuntime: НЕПРЕРЫВНОЕ ИСКЛЮЧЕНИЕ: основной процесс: success.kneu, PID: 12219 java.lang.NoClassDefFoundError: Ошибка разрешения: Ljavax / resource / Referenceable; в java.lang.Class.classForName (собственный метод) в java.lang.Class.forName (Class.java:400) в java.lang.Class.forName (Class.java:326) в success.kneu.LoginActivity $ onCreate $ 1.onClick (LoginActivity.kt: 48) в android.view.View.performClick (View.java:5647) в android.view.View $ PerformClick.run (View.java:22465) в android.os.Handler.handleCallback (Handler.java:754) в android.os.Handler.dispatchMessage (Handler.java:95) в android.os.Looper.loop (Looper.java:163) в android.app.ActivityThread.main (ActivityThread.java: 6238) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:933) в com.android.internal.os.ZygoteInit.main ( ZygoteInit.java:823) Вызвано: java.lang.ClassNotFoundException: javax.resource.Referenceable в java.lang.VMClassLoader.findLoadedClass (собственный метод) в java.lang.ClassLoader.findLoadedClass (ClassLoader.java:742) в java.lang.ClassLoader.loadClass (ClassLoader.java:362) в java.lang.ClassLoader.loadClass (ClassLoader.java:312) в java.lang.Class .classForName (собственный метод) в java.lang.Class.forName (Class.java:400) в java.lang.Class.forName (Class.java:326) в success.kneu.LoginActivity $ onCreate $ 1.onClick (LoginActivity. kt: 48) на android.view.View.performClick (View.java:5647) на android.view.View $ PerformClick.run (View.java:22465) на android.os.Handler.handleCallback (Handler.java:754 ) В android.os.Handler.dispatchMessage (Handler.java:95) в android.os.Looper.loop (Looper.java:163) в android.app.ActivityThread.main (ActivityThread.java:6238) в java.lang .reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:933) на com.a ndroid.internal.os.ZygoteInit.main (ZygoteInit.java:823) Вызвано: java.lang.NoClassDefFoundError: Ошибка разрешения: Ljavax / naming / Referenceable; в java.lang.Class.classForName (собственный метод) в java.lang.Class.forName (Class.java:400) в java.lang. Class.forName (Class.java:326) в success.kneu.LoginActivity $ onCreate $ 1.onClick (LoginActivity.kt: 48) в android.view.View.performClick (View.java:5647) в android.view.View $ PerformClick.run (View.java:22465) на android.os.Handler.handleCallback (Handler.java:754) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper .java: 163) в android.app.ActivityThread.main (ActivityThread.java:6238) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit .java: 933) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:823) Вызвано: java.lang.ClassNotFoundException: не удалось найти класс "javax.naming.Referenceable" на пути: DexPathList [ [zip-файл "/data/app/success.kneu-1/base.apk", zip-файл "/data/app/success.kneu-1/split_lib_dependencies_apk.apk", zip-файл "/data/app/success.kneu -1 / split_lib_slice_0_apk.apk ", zip-файл" /data/app/success.kneu-1/split_lib_slice_1_apk.apk ", zip-файл" /data/app/success.kneu-1/split_lib_slice_2_apk.apk ", zip-файл" / data / app / success.kneu-1 / split_lib_slice_3_apk.apk ", zip-файл" /data/app/success.kneu-1/split_lib_slice_4_apk.apk ", zip-файл" /data/app/success.kneu-1/split_5_apk. apk ", zip-файл" /data/app/success.kneu-1/split_lib_slice_6_apk.apk ", zip-файл" /data/app/success.kneu-1/split_lib_slice_7_apk.apk ", zip-файл" / data / app / success .kneu-1 / split_lib_slice_8_apk.apk ", zip-файл" /data/app/success.kneu-1/split_lib_slice_9_apk.apk" ],nativeLibraryDirectories=[/data/app/success.kneu-1/lib/arm64, / system / lib64, / vendor / lib64]] в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) в java.lang.ClassLoader.loadClass (ClassLoader.java:380) в java.lang.ClassLoader.loadClass (ClassLoader. java: 312) в java.lang.Class.classForName (собственный метод) в java.lang.Class.forName (Class.java:400) в java.lang.Class.forName (Class.java:326) в success.kneu.LoginActivity $ onCreate $ 1.onClick (LoginActivity.kt: 48) на android. view.View.performClick (View.java:5647) в android.view.View $ PerformClick.run (View.java:22465) в android.os.Handler.handleCallback (Handler.java:754) в android.os.Handler .dispatchMessage (Handler.java:95) в android.os.Looper.loop (Looper.java:163) в android.app. ActivityThread.main (ActivityThread.java:6238) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:933) на com.android. internal.os.ZygoteInit.main (ZygoteInit.java:823) 2019-07-14 17: 37: 03.815 12219-12219 /? I / Process: отправка сигнала. PID: 12219 SIG: 9 - person Mark Rotteveel; 02.04.2020