I’m writing the below codes for connection between the java and Oracle 10g XE using 3 way(OCI, THIN and data source), the code is running successfully but don’t know difference between the THIN and OCI with data source connection.
1-
public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:hr/hr@localhost:1521/XE"); Connection con = ods.getConnection(); System.out.println("Connected"); con.close(); }
2-
public static void main(String args[]) { try { // load oracle driver Class.forName("oracle.jdbc.driver.OracleDriver"); // connect using Thin driver Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr"); System.out.println("Connected Successfully To Oracle"); con.close(); } catch(Exception ex) { ex.printStackTrace(); } }
3-
public static void main(String args[]) { try { // load oracle driver Class.forName("oracle.jdbc.driver.OracleDriver"); // connect using Native-API (OCI) driver Connection con = DriverManager.getConnection("jdbc:oracle:oci:@","hr","hr" ); System.out.println("Connected Successfully To Oracle using OCI driver"); con.close(); } catch(Exception ex) { ex.printStackTrace(); } }
Advertisement
Answer
Oracle provides four types of drivers for their database, but I’ll only enumerate the two you asked about.
The OCI driver is a type 2 JDBC driver and uses native code to connect to the database. Thus, it is only an option on platforms that have native Oracle drivers available and it is not a “pure” Java implementation.
Oracle’s JDBC Thin driver is a type 4 JDBC Driver that uses Java sockets to connect directly to Oracle. It implements Oracle’s SQL*Net TCP/IP protocol directly. Because it is 100% Java, it is platform independent and can also run from an Applet. (not that you should)