主要原因是 JDBC jar包冲突
前言:在网上找了解决方案
找到 D:\app\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN 的 sqlnet.ora文件,如果没有这个文件则创建,添加下面的参数
SQLNET.ALLOWED_LOGON_VERSION=8
##没有sqlnet.ora文件时,再添加下面参数
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
但是并未解决问题。
报错原因:因为jdbc jar包冲突导致报ORA-28040
解决方案:将jdbc14 Remove留jdbc7 如图
附jdbc测试代码
package com.its.tgb.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.apache.tomcat.util.codec.binary.Base64;
import com.its.tgb.model.SubmitReq;
import com.its.tgb.model.SubmitRsp;
public class Test {
public static void main(String[] args) {
/**
*
jdbc:代表以jdbc的方式连接; oracle:表示连接的是oracle数据库;
* thin:表示连接时采用thin模式(oracle中有两种模式);
*
* @表示地址;
* localhost:1521:orcl中localhost代表本地数据库,1521代表本地数据库端口号,orcl代表本地数据库的sid
* 。 关于thin的解释: thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,
* 只要求classpath中包含jdbc驱动的jar包就行。thin就是纯粹用Java写的ORACLE数据库访问接口。
* oci是一种胖客户端的连接方式,即采用这种连接方式需要安装oracle客户端。oci是Oracle Call
* Interface的首字母缩写
* ,是ORACLE公司提供了访问接口,就是使用Java来调用本机的Oracle客户端,然后再访问数据库,优点是速度
* 快,但是需要安装和配置数据库。
*/
String driverName = "oracle.jdbc.driver.OracleDriver";// 加载驱动
String dbURL = "jdbc:oracle:thin:@192.168.1.240:1521:ORCL";// localhost代表本机,也可以是
// 127.0.0.1,可以填写具体IP
String userName = "c##wms";// 用户名
String Pwd = "wms";// 密码
try {
Class.forName(driverName);
System.out.println("加载驱动成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("加载驱动失败!");
}
try {
Connection dbConn = DriverManager.getConnection(dbURL, userName,
Pwd);
System.out.println("连接数据库成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.print("数据库连接失败!");
}
}
}