oracle用户无密码jdbc,JDBC无法通过连接池打印本地oracle数据,在用户名密码正确的情况下仍然报ora-01017...

JDBC无法通过连接池打印本地oracle数据,在用户名密码正确的情况下仍然报ora-01017

开发环境是jdk 1.7,oracle 11g,使用原生jdbc连接本地数据库,不使用连接池能打印数据,但是使用连接池,在用户名密码绝对正确的情况下仍然报ora-01017

贴上使用连接池连接oracle的代码,包括三个文件,ConnectionSource.java,EmpDAO.java,db.properties

提问之前已经google,已经排除密码大小写字母被Oracle错误转换的问题(数字密码仍然报错),ojdbc6.jar包使用oracle 11g自带的仍然报错。不知道common-dbcp.jar或者common-pool.jar这两个包是否存在问题。

stackoverflow上跟我报错类似的两个问题链接,但是他们是把连接配在tomcat里面的,所以他们的解决方案对我无效

http://stackoverflow.com/questions/10404…

http://stackoverflow.com/questions/11266…

哪位大侠能帮我看一看问题出在哪儿,感激不尽

ConnectionSource.java

package com.huawei.oracle.pool;

import java.io.IOException;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

public class ConnectionSource {

private static BasicDataSource dataSource = null;

public ConnectionSource(){

}

public static void init(){

Properties dbProps = new Properties();

try{

dbProps.load(ConnectionSource.class.getClassLoader().getResourceAsStream(

"com/huawei/oracle/pool/db.properties"));

}catch(IOException e){

e.printStackTrace();

}

try{

String driveClassName = dbProps.getProperty("jdbc.driverClassName");

String url = dbProps.getProperty("jdbc.url");

String username = dbProps.getProperty("jdbc.username");

String password = dbProps.getProperty("jdbc.password");

String initialSize = dbProps.getProperty("dataSource.initialSize");

String minIdle = dbProps.getProperty("dataSource.minIdle");

String maxIdle = dbProps.getProperty("dataSource.maxIdle");

String maxWait = dbProps.getProperty("dataSource.maxWait");

String maxActive = dbProps.getProperty("dataSource.maxActive");

dataSource = new BasicDataSource();

dataSource.setDriverClassName(driveClassName);

dataSource.setUrl(url);

dataSource.setUsername(username);

dataSource.setPassword(password);

//初始化连接数

if(initialSize!=null){

dataSource.setInitialSize(Integer.parseInt(initialSize));

}

//最小空闲连接

if(minIdle!=null){

dataSource.setMinIdle(Integer.parseInt(minIdle));

}

//最大空闲连接

if(maxIdle!=null){

dataSource.setMaxIdle(Integer.parseInt(maxIdle));

}

//超时回收时间

if(maxWait!=null){

dataSource.setMaxWait(Long.parseLong(maxWait));

}

//最大连接数

if(maxActive!=null){

if(!maxActive.trim().equals("0")){

dataSource.setMaxWait(Integer.parseInt(maxActive));

}

}

}catch(Exception e){

e.printStackTrace();

System.out.println("创建连接池失败!请检查设置");

}

}

public static synchronized Connection getConnection() throws SQLException{

if(dataSource == null){

init();

}

Connection conn = null;

if(dataSource!=null){

conn = dataSource.getConnection();

}

return conn;

}

}

EmpDAO.java

package com.huawei.oracle.pool;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import com.huawei.oracle.pool.ConnectionSource;

public class EmpDAO {

public static void main(String[] args){

EmpDAO dao = new EmpDAO();

dao.findAll();

}

public void findAll(){

Connection con = null;

Statement stmt = null;

ResultSet rs = null;

try{

con = ConnectionSource.getConnection();

stmt = con.createStatement();

rs = stmt.executeQuery("select empno,ename,sal,hiredate from emp");

while(rs.next()){

System.out.println(rs.getInt("empno")+","+rs.getString("ename")+","+rs.getDouble("sal")+","

+rs.getDate("hiredate"));

}

}catch(SQLException e){

System.out.println("数据库访问异常");

throw new RuntimeException(e);

}finally{

try{

if(rs!=null){

rs.close();

}

if(stmt!=null){

stmt.close();

}

if(con!=null){

con.close();

}

}catch(SQLException e){

System.out.println("释放连接资源时发生异常");

}

}

}

}

db.properties

jdbc.driver=oracle.jdbc.OracleDriver

jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL

jdbc.user=huawei

jdbc.password=282828

#<!--initialsize the connection-->

dataSource.initialSize=10

#<!--max free connection-->

dataSource.maxIdle=20

#<!--min free connection-->

dataSource.minIdle=5

#<!--max num of connection-->

dataSource.maxActive=50

#<!--time out wait-->

dataSource.maxWait=1000

附上console打印的报错信息

数据库访问异常

Exception in thread "main" java.lang.RuntimeException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01017: invalid username/password; logon denied

)

at com.huawei.oracle.pool.EmpDAO.findAll(EmpDAO.java:32)

at com.huawei.oracle.pool.EmpDAO.main(EmpDAO.java:14)

Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01017: invalid username/password; logon denied

)

at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)

at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)

at com.huawei.oracle.pool.ConnectionSource.getConnection(ConnectionSource.java:76)

at com.huawei.oracle.pool.EmpDAO.findAll(EmpDAO.java:23)

... 1 more

Caused by: java.sql.SQLException: ORA-01017: invalid username/password; logon denied

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:388)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:381)

at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:564)

at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)

at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)

at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)

at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366)

at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:752)

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:359)

at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)

at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)

at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)

at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)

at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)

at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1247)

at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221)

... 4 more

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值