Android-Oracle 12c数据库连接问题:java.sql.SQLException:ORA-28040:没有匹配的身份验证协议 [英] Android - Oracle 12c Database Connection Issue : java.sql.SQLException: ORA-28040: No matching authentication protocol

查看:1448
本文介绍了Android-Oracle 12c数据库连接问题:java.sql.SQLException:ORA-28040:没有匹配的身份验证协议的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近三天以来,我仅通过 Android-Oracle 12c数据库的简单连接就遇到了问题.

Since last 3 days I am getting problem with just simple connection of Android - Oracle 12c Database.

最近我上传了 Android-Oracle-Connection 但适用于11g版本.我使用了 ojdbc14.jar

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

I have used following lines of code in that demo:

/**
 * 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,但是我用相同的代码将12c的IP 192.168.0.105 更改了,但是不起作用.

Now Problem is, I am using IP : 192.168.0.102 for 11g which was successfully connected but I have change IP 192.168.0.105 for 12c with same code but its not working.

我收到以下错误消息:

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

我已经检查了此答案,并尝试了以下错误,但操作如下:

I have already checked this answer and tried but getting error as:

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)

我已经也尝试过此答案,但收到错误消息:

I have already tried this answer too but getting error as:

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相关的教程或文档.有人可以帮忙吗?

I didn't found any tutorial or documentation to connect with 12c. Can anyone help?

推荐答案

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

Old post but just to answer it, you have to add a parameter on the Database Server sqlnet.ora file to allow connection from older clients. This error happens when your client is old and server is only allows connection from recent version of sqlnet client. Example 11g client trying to connect to 18c DB Server.

这篇关于Android-Oracle 12c数据库连接问题:java.sql.SQLException:ORA-28040:没有匹配的身份验证协议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆