connecting to an oracle db using the thick (oci) driver

From: Dave Holland (dholland_at_mgtplc.com)
Date: 06/25/04


Date: 25 Jun 2004 06:15:07 -0700

Hi,
I hope someone out there can help me with this. I usually connect to
the oracle database from my java code via the thin driver. However I
have been asked to investigate using the oci driver instead. I have
installed the oracle 9 client (on my win2000 PC) and have set up a
test harness (code below), but all I seem to get is a
'java.sql.SQLException: Closed Connection' when I try to connect.

code follows>>>>>
import java.sql.*;

public class DbHarness{
    public static void main(String [] args){
        DbHarness thisTest = new DbHarness();
        thisTest.test();
        //thisTest.connect();
    }
    public void DbHarness(){}
    
    public void test(){
        System.out.println("about to connect");
        connect();
        System.out.println("Connection complete");
        
    }
    public void connect(){
        Connection conn = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String connectString = "jdbc:oracle:oci:@BOB";
            conn = DriverManager.getConnection(connectString,
"bobuser", "bobpassword");
            if (conn!=null){
                System.out.println("connection made");
            }
            else{
                System.out.println("connection NOT made");
            }
        }
        catch(ClassNotFoundException cnfe) {
            System.err.println(cnfe);
        }
        catch(SQLException sqle) {
            System.err.println("error connecting to db "+
sqle.toString()); //error connection to database
            sqle.printStackTrace();
        }
        finally{
            if (conn!=null){
                try{
                    conn.close();
                }
                catch(SQLException e){
                    System.err.println("can't close connection
"+e.toString());
                }
            }
        }
    }
}

//end code
where BOB is the tnsnames.ora file entry for my database and bobuser
is the user name and bobpassword is the password

full output is
about to connect
error connecting to db java.sql.SQLException: Closed Connection
java.sql.SQLException: Closed Connection
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
        at oracle.jdbc.oci8.OCIDBAccess.check_error(OCIDBAccess.java:2348)
        at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:477)
        at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)

        at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:468)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at DbHarness.connect(DbHarness.java:26)
        at DbHarness.test(DbHarness.java:13)
        at DbHarness.main(DbHarness.java:6)
Connection complete

Thanks in advance
Dave Holland