drivermanager.getconnection fails
843854Oct 4 2004 — edited Oct 4 2004
I have a multi-thread application connecting from W2K to multiple DB SQL server 2K.
If I don't close DB connections the application works fine apart from leaving lot of connections pendong to DB servers.
If close DB connections (after closing recordsets and statements) the following error occurs in drivermanager.getconnection(url,user,passwd).:
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x19D3DB0C
Function=[Unknown.]
Library=(N/A)
NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for possible
reason and solutions.
Current Java thread:
at sun.jdbc.odbc.JdbcOdbc.getDataInteger(Native Method)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
- locked <0x104f4a28> (a sun.jdbc.odbc.JdbcOdbcDriver)
at java.sql.DriverManager.getConnection(Unknown Source)
- locked <0x1412c3c0> (a java.lang.Class)
at java.sql.DriverManager.getConnection(Unknown Source)
- locked <0x1412c3c0> (a java.lang.Class)
at Job.dbConnect(Job.java:318)
- locked <0x10530cc8> (a Job)
at Job.refreshMe(Job.java:773)
at DoIt.run(DoIt.java:26)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Here is my code used to open/close DB connections:
synchronized public void dbConnect(){
try {
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ex) {
return;
}
DriverManager.setLoginTimeout(5);
try {
if (this.jobConn==null)
this.jobConn = DriverManager.getConnection("jdbc:odbc:" + this.dbName, this.dbUsr, this.dbPwd);
} catch (SQLException ex) {
ex.printStackTrace();
this.jobConn=null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
synchronized public void dbClose(){
try {
if (this.jobConn!=null ) {
this.jobConn.close();
this.jobConn=null;
}
}
catch (SQLException ex){
this.jobConn=null;
ex.printStackTrace();
}
}