我有一个问题无法解决,我使用 ojdbc7 库将java连接到数据库 Oracle11g 但是在启动程序时结束java应用程序没有前进而没有回应。 我试图改变驱动程序ojdbc,但你知道什么,给我一些想法?我附上了代码:
private static HashMap<String, Connection> connessioni = new HashMap<>();
....
public static Connection getConnectionIstance(String connessione){
Connection connection=null;
try{
if((connection=connessioni.get(connessione))==null){
Class.forName("driver");
connection=DriverManager.getConnection("urlDb","userDb","pwdDb");
connection.setAutoCommit(false);
connessioni.put(connessione, connection);
}
}catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
return connection;
}
主
...
CallableStatement callStatement=null;
callStatement = connection.prepareCall({call nomePkg.mainpkg(?)});
callStatement.registerOutParameter(1, Types.INTEGER);
System.out.println("START PROCEDURe");
callStatement.execute();
System.out.println("END PROCEDURe");
控制台永远不会打印“END PROCEDURe”。
P.S。该过程大约需要一个半小时
答案 0 :(得分:0)
JDBC语句通常会使java进程等待结果(或错误)。如果要在执行数据库代码时让应用程序继续运行,请使用后端线程调用execute()
方法。
也知道数据库层可能有或没有超时,因此在一段时间后没有响应的方法可能会超时;那些不会向JDBC层返回消息,因此JDBC层不会再回来。
查看oracle配置的超时设置。