10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 数据库的Timeout 其实有很多种情况。

一个是执行的超时时间 executionTimeOut,一个是连接的超时时间connectionTimeOut,

还有呢? 等待的超时时间 ReadTimeout。不过很多数据库情况下connectionTimeOut 就是ReadTimeout

 

 

props.put("user", userName);
props.put("password", passSecret);
if ("oracle".equals(dbType)) {
//props.put("connectionProperties", "oracle.net.CONNECT_TIMEOUT=10000;oracle.jdbc.ReadTimeout=10000");
props.put("oracle.net.CONNECT_TIMEOUT", "10000");
props.put("oracle.jdbc.ReadTimeout", "10000");
}

 

 

 

 

String sleepsql = "declare "+
"begin "+
"sys.dbms_lock.sleep(20); "+
"dbms_output.put_line('asfasf');"+
"end;";
String sqlStr =
"select distinct tablespace_name from sys.dba_tables where owner = '"
+ dbInfo.getName().toUpperCase()
+ "' and trim(tablespace_name) is not null";
List<String> dbList = new ArrayList<String>();
PreparedStatement statement = null;
ResultSet rs = null;
try {
CallableStatement callableStatement = conn.prepareCall(sleepsql);
callableStatement.execute();
//conn.setNetworkTimeout(Executors.newCachedThreadPool(), 30000);
} catch (SQLException e) {
e.printStackTrace();
} finally {

}

 

开始是通过下面的,不过一直就是报错,行不通, 貌似驱动版本不够新。

conn.setNetworkTimeout(Executors.newCachedThreadPool(), 30000);

 

 

 

 

 

有关数据库的锁:

 

http://www.cnblogs.com/cqubityj/archive/2012/06/16/2551947.html

 

http://www.cnblogs.com/leemoby/p/3583428.html

 


LOCK TABLE iempeam.t_aa IN EXCLUSIVE MODE

 

SELECT * FROM  iempeam.t_aa  TABLOCKX 

 

 

 

posted on 2014-07-20 01:29  CanntBelieve  阅读(769)  评论(0)    收藏  举报