Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / Databases / July 2004

Tip: Looking for answers? Try searching our database.

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

Thread view: 
Dave Holland - 25 Jun 2004 14:15 GMT
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
Robert A.M. van Lopik - 28 Jun 2004 17:08 GMT
> Hi,
> I hope someone out there can help me with this.  I usually connect to
[quoted text clipped - 67 lines]
>         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)
[quoted text clipped - 7 lines]
> Thanks in advance
> Dave Holland

I only wrote jdbc code once and what I have looks like:

try
{
   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

   Connection conn =
   DriverManager.getConnection ("jdbc:oracle:oci8:@connectstring", dbUser,
dbPw);
...
and that works. Did you make sure you can logon to the database using that
connect string in SQLplus?

hth

rob van lopik
Dave Holland - 29 Jun 2004 13:21 GMT
> > Hi,
> > I hope someone out there can help me with this.  I usually connect to
[quoted text clipped - 104 lines]
>
> rob van lopik

Hi,
Both DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver()); and
Class.forName("oracle.jdbc.driver.OracleDriver"); can be used to
register the driver, the 'DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver())' way tends to be used in non-JDK
JVMs such as Microsofts.  I've not yet worked out where the problem
is. I suspect it could be in my install of the oracle client, I'll
pursue this and post what I find.
Dave Holland
Shanmuhanathan T - 08 Jul 2004 13:11 GMT
on 6/25/2004 6:45 PM Dave Holland Wrote:
> Hi,
> I hope someone out there can help me with this.  I usually connect to
[quoted text clipped - 5 lines]
>
> code follows>>>>>
<snip>
> full output is
> about to connect
[quoted text clipped - 18 lines]
> Thanks in advance
> Dave Holland

Dave,
The only time I got this error was when my JDBC class versions did not
match the OCI version - specifically I was using JDBC with Jdeveloper10g
to connect using OCI in my 9i oracle_home. Sync'ing up the JDBC/OCI
versions should solve this problem.
Signature

Shanmu

K N V Sudhakar - 16 Jul 2004 08:05 GMT
Hi Dave,

I am also getting the same/similar message when I am trying to connect
to Oracle database.

I am able to connect to the database if I add the connection string
put in tnsnames.ora in the statement as mentioned below:
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@(description=(address=(
host=10.8.32.178)(protocol=tcp)(port=1521))(connect_data=(sid="+BCVDatabase+")))",BCV_user,
BCV_password);

But when I am using the statement as below
Connection conn = DriverManager.getConnection("jdbc:oracle:oci:@VLCTYPOC",
BCV_user, BCV_password);
and adding connection String for VLCTYPOC in TNSNAMES.ora, I am
getting the error message as java.sql.SQLException: Closed Connection.

> on 6/25/2004 6:45 PM Dave Holland Wrote:
> > Hi,
[quoted text clipped - 35 lines]
> to connect using OCI in my 9i oracle_home. Sync'ing up the JDBC/OCI
> versions should solve this problem.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.