【问题标题】:Android - Oracle 12c Database Connection Issue : java.sql.SQLException: ORA-28040: No matching authentication protocolAndroid - Oracle 12c 数据库连接问题:java.sql.SQLException:ORA-28040:没有匹配的身份验证协议
【发布时间】:2020-03-19 06:34:19
【问题描述】:

自从过去 3 天以来,我在 Android - Oracle 12c 数据库的简单连接上遇到了问题。

最近我上传了 Android-Oracle-Connection 但它是 11g 版本的。我用过 ojdbc14.jar

我在该演示中使用了以下代码行:

/**
 * Driver for Oracle
 */
private static final String DEFAULT_DRIVER = "oracle.jdbc.driver.OracleDriver";


/**
 * URL to connect database
 */
private static final String DEFAULT_URL = "jdbc:oracle:thin:@192.168.0.102:1521:oracle"; // Change IP_Address:Database

/**
 * Creating Connection
 *
 * @param driver   driver object
 * @param url      url for db
 * @param username username
 * @param password password
 * @return Connection object
 * @throws ClassNotFoundException throwing exception
 * @throws SQLException           throwing exception
 */
public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException {
    Class.forName(driver);
    return DriverManager.getConnection(url, username, password);
}

现在的问题是,我正在使用 IP:192.168.0.102 用于 11g,它已成功连接,但我已更改 IP 192.168.0.105 用于 12c,但代码相同不工作。

我收到以下错误:

java.sql.SQLException: ORA-28040: No matching authentication protocol

我已经checked this answer 尝试过,但出现以下错误:

W/oracle.jdbc: Error while registering Oracle JDBC Diagnosability MBean.
    java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/management/ManagementFactory;
        at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:321)
        at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:203)
        at java.security.AccessController.doPrivileged(AccessController.java:43)
        at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:199)
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:454)
        at java.lang.Class.forName(Class.java:379)

我也已经tried this answer 了,但出现以下错误:

2019-11-23 16:36:12.564 28567-28567/com.demo.oracle E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.demo.oracle, PID: 28567
    java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar)
        at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:230)
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:454)
        at java.lang.Class.forName(Class.java:379)

我没有找到任何与 12c 相关的教程或文档。有人可以帮忙吗?

【问题讨论】:

  • 更新您的 jdbc 驱动程序并重试。 “14”表示 JAVA 1.4 ojdbc14.jar。打赌你没有使用 java 1.4。
  • 我认为 Java 1.4 是旧版本,我使用的是 Java 1.8。我只是想知道如何使用 Oracle 12c。
  • @PratikButani ojdbc7.jar 应该适合你,可以在这里找到:oracle.com/database/technologies/jdbc-upc-downloads.html

标签: android oracle oracle12c sqlexception nosuchmethoderror


【解决方案1】:

旧帖子但只是为了回答它,您必须在数据库服务器 sqlnet.ora 文件上添加一个参数以允许来自旧客户端的连接。当您的客户端较旧且服务器仅允许来自最新版本的 sqlnet 客户端的连接时,会发生此错误。示例 11g 客户端尝试连接到 18c 数据库服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2014-03-08
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多