oracle .jdb c .driver.T4CConnection.getSchema () исключение - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь получить имя базы данных по умолчанию из соединения для oracle

Следующий код дает мне эту ошибку абстрактного метода. Может ли кто-нибудь предложить мне, как я могу получить имя базы данных по умолчанию, используя jdb c?

версию информации об окружающей среде

oracle:Oracle 11g
java:1.8

pom. xml

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
  </properties>
  <dependencies>
    <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc6</artifactId>
      <version>11.2.0.3</version>
    </dependency>
  </dependencies>

код

package snippet;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectiongetSchemaErrorTest {
  public static void main(String[] args) {
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@xx:8095/orcl";
    String user = "xx";
    String pswd = "xx";

    try {
      Class.forName(driver);
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }

    Connection connection = null;
    try {
      connection = DriverManager.getConnection(url, user, pswd);
      System.out.println(connection.getClass().getName());
      String schema = connection.getSchema();
      System.out.println(schema);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        connection.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

ошибка

oracle.jdbc.driver.T4CConnection
Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.getSchema()Ljava/lang/String;
    at snippet.ConnectiongetSchemaErrorTest.main(ConnectiongetSchemaErrorTest.java:24)

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Официальные поддерживаемые версии Oracle JDB C из 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 и 19.7.0.0 доступны в Центральном репозитории Maven. Дополнительные сведения см. В Maven Central Guide .

Рекомендуется использовать последнюю версию. Проверьте FAQ для совместимости с JDK.

0 голосов
/ 04 августа 2020
Метод

getSchema() доступен только в Java 7 и выше, но ojdbc6.jar скомпилирован с Java 6, где ojdbc8.jar скомпилирован с Java 8. Либо используйте ojdbc8.jar, либо вы можете попробовать приведенный ниже код с ojdbc6.jar

   // For ojdbc6.jar
   String schema= connection.getMetaData().getUserName();
   System.out.println("Schema Name is : " + schema);

   or 
 
    DatabaseMetaData dbmd = connection.getMetaData();
   String schema=dbmd.getUserName();
   System.out.println("Schema Name is : " + schema);
 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...