Java/Database SQL JDBC/Oracle JDBC

Материал из Java эксперт
Перейти к: навигация, поиск

All data types for Oracle

   <source lang="java">

/** Code revised from Database Metadata with JDBC A sample from JDBC Metadata, MySQL, and Oracle Recipes by Mahmoud Parsian

  • /

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement;

public class CreateTableAllTypesInOracle {
   public static Connection getConnection() throws Exception {
       String driver = "oracle.jdbc.driver.OracleDriver";
       String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
       String username = "scott";
       String password = "tiger";
       Class.forName(driver);  // load Oracle driver
       Connection conn = DriverManager.getConnection(url, username, password);
       return conn;
   }
   public static void main(String[] args) {
       PreparedStatement pstmt = null;
       Connection conn = null;
       try {
           conn = getConnection();
           pstmt = conn.prepareStatement("CREATE TYPE varray_type is VARRAY(5) OF VARCHAR(10)");
           pstmt.executeUpdate();
           // Create an OBJECT type
           pstmt = conn.prepareStatement("CREATE TYPE oracle_object is OBJECT(column_string VARCHAR(128), column_integer INTEGER)");
           pstmt.executeUpdate();
           StringBuffer allTypesTable = new StringBuffer("CREATE TABLE oracle_all_types(");
           //                    Column Name          Oracle Type              Java Type
           allTypesTable.append("column_short           SMALLINT, ");          // short
           allTypesTable.append("column_int             INTEGER, ");           // int
           allTypesTable.append("column_float           REAL, ");              // float; can also be NUMBER
           allTypesTable.append("column_double          DOUBLE PRECISION, ");  // double; can also be FLOAT or NUMBER
           allTypesTable.append("column_bigdecimal      DECIMAL(13,0), ");     // BigDecimal
           allTypesTable.append("column_string          VARCHAR2(254), ");     // String; can also be CHAR(n)
           allTypesTable.append("column_characterstream LONG, ");              // CharacterStream or AsciiStream
           allTypesTable.append("column_bytes           RAW(2000), ");         // byte[]; can also be LONG RAW(n)
           allTypesTable.append("column_binarystream    RAW(2000), ");         // BinaryStream; can also be LONG RAW(n)
           allTypesTable.append("column_timestamp       DATE, ");              // Timestamp
           allTypesTable.append("column_clob            CLOB, ");              // Clob
           allTypesTable.append("column_blob            BLOB, ");              // Blob; can also be BFILE
           allTypesTable.append("column_bfile           BFILE, ");             // oracle.sql.BFILE
           allTypesTable.append("column_array           varray_type, ");       // oracle.sql.ARRAY
           allTypesTable.append("column_object          oracle_object)");      // oracle.sql.OBJECT
           pstmt.executeUpdate(allTypesTable.toString());
       } catch (Exception e) {
           // creation of table failed.
           // handle the exception
           e.printStackTrace();
       }
   }

}


 </source>
   
  
 
  



Check JDBC Installation for Oracle

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class CheckJDBCInstallation_Oracle {

 public static Connection getConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "name";
   String password = "pass";
   Class.forName(driver); // load Oracle driver
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 /**
  * Test Validity of JDBC Installation
  * 
  * @param conn
  *          a JDBC connection object
  * @return true if a given connection object is a valid one; otherwise return
  *         false.
  * @throws Exception
  *           Failed to determine if a given connection is valid.
  */
 public static boolean isValidConnection(Connection conn) throws Exception {
   if (conn == null) {
     // null connection object is not valid
     return false;
   }
   if (conn.isClosed()) {
     // closed connection object is not valid
     return false;
   }
   // for Oracle database:
   // you may use the connection object
   // with query of "select 1 from dual";
   // if the query returns the result, then
   // it is a valid connection object.
   return testConnection(conn, "select 1 from dual");
 }
 /**
  * Test Validity of a Connection
  * 
  * @param conn
  *          a JDBC connection object
  * @param query
  *          a sql query to test against database connection
  * @return true if a given connection object is a valid one; otherwise return
  *         false.
  */
 public static boolean testConnection(Connection conn, String query) {
   ResultSet rs = null;
   Statement stmt = null;
   try {
     stmt = conn.createStatement();
     if (stmt == null) {
       return false;
     }
     rs = stmt.executeQuery(query);
     if (rs == null) {
       return false;
     }
     if (rs.next()) {
       // connection object is valid: we were able to
       // connect to the database and return something useful.
       return true;
     }
     // there is no hope any more for the validity
     // of the connection object
     return false;
   } catch (Exception e) {
     return false;
   } finally {
     // close database resources
     try {
       rs.close();
       stmt.close();
     } catch (Exception e) {
       // ignore
     }
   }
 }
 public static void main(String[] args) {
   Connection conn = null;
   try {
     conn = getConnection();
     System.out.println("conn=" + conn);
     System.out.println("valid connection = " + isValidConnection(conn));
   } catch (Exception e) {
     // handle the exception
     e.printStackTrace();
     System.exit(1);
   } finally {
     // release database resources
     try {
       conn.close();
     } catch (Exception e) {
       // ignore
     }
   }
 }

}


 </source>
   
  
 
  



Connect to an Oracle database with JDBC

   <source lang="java">
 

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Main {

 public static void main(String[] args) throws Exception {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection conn = DriverManager.getConnection(
       "jdbc:oracle:thin:@//server.local:1521/prod", "scott", "tiger");
   conn.setAutoCommit(false);
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt.executeQuery("select * from employee");
   while (rset.next()) {
     System.out.println(rset.getString(1));
   }
   stmt.close();
 }

}


 </source>
   
  
 
  



Count row in Oracle

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class CountRows_Oracle {

 public static Connection getConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "userName";
   String password = "pass";
   Class.forName(driver); 
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static int countRows(Connection conn, String tableName) throws SQLException {
   // select the number of rows in the table
   Statement stmt = null;
   ResultSet rs = null;
   int rowCount = -1;
   try {
     stmt = conn.createStatement();
     rs = stmt.executeQuery("SELECT COUNT(*) FROM " + tableName);
     // get the number of rows from the result set
     rs.next();
     rowCount = rs.getInt(1);
   } finally {
     rs.close();
     stmt.close();
   }
   return rowCount;
 }
 public static void main(String[] args) {
   Connection conn = null;
   try {
     conn = getConnection();
     String tableName = "myTable";
     System.out.println("tableName=" + tableName);
     System.out.println("conn=" + conn);
     System.out.println("rowCount=" + countRows(conn, tableName));
   } catch (Exception e) {
     e.printStackTrace();
     System.exit(1);
   } finally {
     // release database resources
     try {
       conn.close();
     } catch (SQLException e) {
       e.printStackTrace();
     }
   }
 }

}


 </source>
   
  
 
  



Create a table in database

   <source lang="java">
 

import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Main {

 public static void main(String[] args) throws Exception {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   String url = "jdbc:oracle:thin:@localhost:1521:javaDemo";
   String username = "username";
   String password = "welcome";
   String sql = "CREATE TABLE books (id NUMBER(11), title VARCHAR2(64))";
   Connection connection = DriverManager.getConnection(url, username, password);
   Statement statement = connection.createStatement();
   statement.execute(sql);
   connection.close();
 }

}


 </source>
   
  
 
  



Create Employee Table Oracle

   <source lang="java">

import java.sql.Connection; import java.sql.Statement; import java.sql.DriverManager; import java.sql.SQLException; public class MainClass {

 private static final String EMPLOYEE_TABLE = "create table MyEmployees3 ( "
     + "   id INT PRIMARY KEY, firstName VARCHAR(20), lastName VARCHAR(20), "
     + "   title VARCHAR(20), salary INT " + ")";
 public static Connection getConnection() throws ClassNotFoundException, SQLException {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:database";
   String username = "name";
   String password = "pass";
   Class.forName(driver);
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static void main(String args[]) {
   Connection conn = null;
   Statement stmt = null;
   try {
     conn = getConnection();
     stmt = conn.createStatement();
     stmt.executeUpdate(EMPLOYEE_TABLE);
     stmt.executeUpdate("insert into MyEmployees3(id, firstName) values(100, "A")");
     stmt.executeUpdate("insert into MyEmployees3(id, firstName) values(200, "B")");
     System.out.println("CreateEmployeeTableOracle: main(): table created.");
   } catch (ClassNotFoundException e) {
     System.out.println("error: failed to load Oracle driver.");
     e.printStackTrace();
   } catch (SQLException e) {
     System.out.println("error: failed to create a connection object.");
     e.printStackTrace();
   } catch (Exception e) {
     System.out.println("other error:");
     e.printStackTrace();
   } finally {
     try {
       stmt.close();
       conn.close();
     } catch (Exception e) {
     }
   }
 }

}


 </source>
   
  
 
  



Creating an OBJECT Type in an Oracle Database

   <source lang="java">
 

import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "oracle.jdbc.driver.OracleDriver";
   Class.forName(driverName);
   String serverName = "127.0.0.1";
   String portNumber = "1521";
   String sid = "mydatabase";
   String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
   String username = "username";
   String password = "password";
   Connection connection = DriverManager.getConnection(url, username, password);
   Statement stmt = connection.createStatement();
   stmt.execute("CREATE TYPE object2 AS OBJECT(col_string2 VARCHAR(30), col_integer2 NUMBER)");
   stmt.execute("CREATE TYPE object1 AS OBJECT(col_string1 VARCHAR(30), col_integer2 object2)");
   stmt.execute("CREATE TABLE object1_table(col_integer NUMBER, col_object1 object1)");
 }

}


 </source>
   
  
 
  



Creating an Oracle Table to Store Java Types

   <source lang="java">
 

import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "oracle.jdbc.driver.OracleDriver";
   Class.forName(driverName);
   String serverName = "127.0.0.1";
   String portNumber = "1521";
   String sid = "mydatabase";
   String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
   String username = "username";
   String password = "password";
   Connection connection = DriverManager.getConnection(url, username, password);
   Statement stmt = connection.createStatement();
   stmt.execute("CREATE TYPE number_varray AS VARRAY(10) OF NUMBER(12, 2)");
   stmt.execute ("CREATE TYPE my_object AS OBJECT(col_string2 VARCHAR(30), col_int2 INTEGER)");
   //    Column Name          Oracle Type             Java Type
   String sql = "CREATE TABLE oracle_all_table("
       + "col_short           SMALLINT, "          // short
       + "col_int             INTEGER, "           // int
       + "col_float           REAL, "              // float; can also be NUMBER
       + "col_double          DOUBLE PRECISION, "  // double; can also be FLOAT or NUMBER
       + "col_bigdecimal      DECIMAL(13,0), "     // BigDecimal
       + "col_string          VARCHAR2(254), "     // String; can also be CHAR(n)
       + "col_characterstream LONG, "              // CharacterStream or AsciiStream
       + "col_bytes           RAW(2000), "         // byte[]; can also be LONG RAW(n)
       + "col_binarystream    RAW(2000), "         // BinaryStream; can also be LONG RAW(n)
       + "col_timestamp       DATE, "              // Timestamp
       + "col_clob            CLOB, "              // Clob
       + "col_blob            BLOB, "              // Blob; can also be BFILE
       + "col_array           number_varray, "     // oracle.sql.ARRAY
       + "col_object          my_object)";         // oracle.sql.OBJECT
   stmt.executeUpdate(sql);
 }

}


 </source>
   
  
 
  



Demo ResultSet Oracle

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DemoResultSetOracle {

 public static Connection getConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "username";
   String password = "password";
   Class.forName(driver); // load Oracle driver
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   ResultSet rs = null;
   try {
     conn = getConnection();
     System.out.println("conn=" + conn);
     // prepare query
     String query = "select id, name, age from employees";
     // create a statement
     stmt = conn.createStatement();
     // execute query and return result as a ResultSet
     rs = stmt.executeQuery(query);
     // extract data from the ResultSet
     while (rs.next()) {
       String id = rs.getString(1);
       String name = rs.getString(2);
       int age = rs.getInt(3);
       System.out.println("id=" + id);
       System.out.println("name=" + name);
       System.out.println("age=" + age);
       System.out.println("---------------");
     }
   } catch (Exception e) {
     e.printStackTrace();
     System.exit(1);
   } finally {
     // release database resources
     try {
       rs.close();
       stmt.close();
       conn.close();
     } catch (SQLException e) {
       e.printStackTrace();
     }
   }
 }

}


 </source>
   
  
 
  



Get Column Names From ResultSet for Oracle

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class GetColumnNamesFromResultSet_Oracle {

 public static Connection getConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "username";
   String password = "pass";
   Class.forName(driver);
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static void getColumnNames(ResultSet rs) throws SQLException {
   if (rs == null) {
     return;
   }
   // get result set meta data
   ResultSetMetaData rsMetaData = rs.getMetaData();
   int numberOfColumns = rsMetaData.getColumnCount();
   // get the column names; column indexes start from 1
   for (int i = 1; i < numberOfColumns + 1; i++) {
     String columnName = rsMetaData.getColumnName(i);
     // Get the name of the column"s table name
     String tableName = rsMetaData.getTableName(i);
     System.out.println("column name=" + columnName + " table=" + tableName + "");
   }
 }
 public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   ResultSet rs = null;
   try {
     conn = getConnection();
     // prepare query
     String query = "select id, name, age from employees";
     // create a statement
     stmt = conn.createStatement();
     // execute query and return result as a ResultSet
     rs = stmt.executeQuery(query);
     // get the column names from the ResultSet
     getColumnNames(rs);
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     // release database resources
     try {
       rs.close();
       stmt.close();
       conn.close();
     } catch (SQLException e) {
       e.printStackTrace();
     }
   }
 }

}


 </source>
   
  
 
  



Get Object From Oracle Database Using STRUCT

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Main {

 public static void main(String[] args) throws Exception {
   Connection conn = null;
   Statement stmt = null;
   ResultSet rs = null;
   conn = getOracleConnection();
   stmt = conn.createStatement();
   rs = stmt.executeQuery("SELECT emp, age FROM employee");
   while (rs.next()) {
     oracle.sql.STRUCT emp = (oracle.sql.STRUCT) rs.getObject(1);
     Object[] empValues = emp.getAttributes();
     String name = (String) empValues[0];
     java.math.BigDecimal badgeNumber = (java.math.BigDecimal) empValues[1];
     int age = rs.getInt(2);
     System.out.println("name=" + name);
     System.out.println("badgeNumber=" + badgeNumber);
     System.out.println("age=" + age);
   }
   rs.close();
   stmt.close();
   conn.close();
 }
 private static Connection getHSQLConnection() throws Exception {
   Class.forName("org.hsqldb.jdbcDriver");
   System.out.println("Driver Loaded.");
   String url = "jdbc:hsqldb:data/tutorial";
   return DriverManager.getConnection(url, "sa", "");
 }
 public static Connection getMySqlConnection() throws Exception {
   String driver = "org.gjt.mm.mysql.Driver";
   String url = "jdbc:mysql://localhost/demo2s";
   String username = "oost";
   String password = "oost";
   Class.forName(driver);
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static Connection getOracleConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "userName";
   String password = "password";
   Class.forName(driver); // load Oracle driver
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }

}


 </source>
   
  
 
  



Get Oracle Table Names

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Main {

 public static void main(String[] args) throws Exception {
   Connection conn = getOracleConnection();
   Statement stmt = null;
   ResultSet rs = null;
   stmt = conn.createStatement();
   //only for Oracle
   rs = stmt.executeQuery("select object_name from user_objects where object_type = "TABLE"");
   while (rs.next()) {
     String tableName = rs.getString(1);
     System.out.println("tableName=" + tableName);
   }
   stmt.close();
   conn.close();
 }
 private static Connection getHSQLConnection() throws Exception {
   Class.forName("org.hsqldb.jdbcDriver");
   System.out.println("Driver Loaded.");
   String url = "jdbc:hsqldb:data/tutorial";
   return DriverManager.getConnection(url, "sa", "");
 }
 public static Connection getMySqlConnection() throws Exception {
   String driver = "org.gjt.mm.mysql.Driver";
   String url = "jdbc:mysql://localhost/demo2s";
   String username = "oost";
   String password = "oost";
   Class.forName(driver);
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static Connection getOracleConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:caspian";
   String username = "mp";
   String password = "mp2";
   Class.forName(driver); // load Oracle driver
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }

}


 </source>
   
  
 
  



Get Parameter MetaData From Oracle JDBC Driver

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ParameterMetaData; import java.sql.PreparedStatement; import java.sql.Statement; public class Main {

 public static void main(String[] args) throws Exception {
   Connection conn = getOracleConnection();
   Statement st = conn.createStatement();
   st.executeUpdate("drop table survey;");
   st.executeUpdate("create table survey (id int,name varchar(30));");
   st.executeUpdate("insert into survey (id,name ) values (1,"nameValue")");
   
   
   PreparedStatement pstmt = null;
   ParameterMetaData paramMetaData = null;
   String query = "select * from survey where id > ? ";
   System.out.println("conn=" + conn);
   pstmt = conn.prepareStatement(query);
   paramMetaData = pstmt.getParameterMetaData();
   if (paramMetaData == null) {
     System.out.println("db vendor does NOT support ParameterMetaData");
   } else {
     System.out.println("db vendor supports ParameterMetaData");
     // find out the number of dynamic parameters
     int paramCount = paramMetaData.getParameterCount();
     System.out.println("paramCount=" + paramCount);
   }
   pstmt.close();
   conn.close();
 }
 private static Connection getHSQLConnection() throws Exception {
   Class.forName("org.hsqldb.jdbcDriver");
   System.out.println("Driver Loaded.");
   String url = "jdbc:hsqldb:data/tutorial";
   return DriverManager.getConnection(url, "sa", "");
 }
 public static Connection getMySqlConnection() throws Exception {
   String driver = "org.gjt.mm.mysql.Driver";
   String url = "jdbc:mysql://localhost/demo2s";
   String username = "oost";
   String password = "oost";
   Class.forName(driver);
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static Connection getOracleConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:caspian";
   String username = "mp";
   String password = "mp2";
   Class.forName(driver); // load Oracle driver
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }

}


 </source>
   
  
 
  



Insert BLOG(Picture or Photo) Data Type Into Oracle Database

   <source lang="java">

/* Defining the Table: Oracle and MySql create table MyPictures (

  id INT PRIMARY KEY,
  name VARCHAR(0),
  photo BLOB

);

  • /

import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import oracle.jdbc.OracleResultSet; public class Main {

 public static void main(String[] args) throws Exception {
   Connection conn = getOracleConnection();
   int rows = 0;
   FileInputStream fin = null;
   OutputStream out = null;
   ResultSet rs = null;
   Statement stmt = null;
   oracle.sql.BLOB photo = null;
   conn.setAutoCommit(false);
   stmt = conn.createStatement();
   String id = "001";
   String binaryFileName = "fileName.dat";
   rows = stmt.executeUpdate("insert into my_pictures(id, photo ) values ("" + id
       + "", empty_blob() )");
   System.out.println(rows + " rows inserted");
   rs = stmt.executeQuery("select photo from  my_pictures where id = "" + id
       + "" for update nowait");
   rs.next();
   photo = ((OracleResultSet) rs).getBLOB(1);
   fin = new FileInputStream(new File(binaryFileName));
   out = photo.getBinaryOutputStream();
   // Get the optimal buffer size from the BLOB
   byte[] buffer = new byte[photo.getBufferSize()];
   int length = 0;
   while ((length = fin.read(buffer)) != -1) {
     out.write(buffer, 0, length);
   }
   conn.rumit();
   out.close();
   fin.close();
   rs.close();
   stmt.close();
   conn.close();
 }
 private static Connection getHSQLConnection() throws Exception {
   Class.forName("org.hsqldb.jdbcDriver");
   System.out.println("Driver Loaded.");
   String url = "jdbc:hsqldb:data/tutorial";
   return DriverManager.getConnection(url, "sa", "");
 }
 public static Connection getMySqlConnection() throws Exception {
   String driver = "org.gjt.mm.mysql.Driver";
   String url = "jdbc:mysql://localhost/demo2s";
   String username = "oost";
   String password = "oost";
   Class.forName(driver);
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static Connection getOracleConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "userName";
   String password = "password";
   Class.forName(driver); // load Oracle driver
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }

}


 </source>
   
  
 
  



Insert custom type to Oracle

   <source lang="java">

import java.io.Serializable; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLData; import java.sql.SQLException; import java.sql.SQLInput; import java.sql.SQLOutput; public class InsertCustomType_Oracle {

 public static Connection getConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "userName";
   String password = "pass";
   Class.forName(driver); // load Oracle driver
   return DriverManager.getConnection(url, username, password);
 }
 public static void main(String[] args) {
   String id = "001";
   String isbn = "1234567890";
   String title = "java demo";
   String author = "jexp";
   int edition = 1;
   Connection conn = null;
   PreparedStatement pstmt = null;
   try {
     conn = getConnection();
     String insert = "insert into book_table values(?, BOOK(?, ?, ?, ?))";
     pstmt = conn.prepareStatement(insert);
     pstmt.setString(1, id);
     pstmt.setString(2, isbn);
     pstmt.setString(3, title);
     pstmt.setString(4, author);
     pstmt.setInt(5, edition);
     pstmt.executeUpdate();
   } catch (Exception e) {
     e.printStackTrace();
     System.exit(1);
   } finally {
     try {
       pstmt.close();
       conn.close();
     } catch (SQLException e) {
       e.printStackTrace();
     }
   }
 }

} /**

* A class to hold a copy of "BOOK" data type
*/

class Book implements SQLData, Serializable {

 public static final String SQL_TYPE_NAME = "BOOK";
 public String isbn;
 public String title;
 public String author;
 public int edition;
 public Book() {
 }
 public Book(String isbn, String title, String author, int edition) {
   this.isbn = isbn;
   this.title = title;
   this.author = author;
   this.edition = edition;
 }
 // retrieves the fully qualified name of the SQL
 // user-defined type that this object represents.
 public String getSQLTypeName() {
   return SQL_TYPE_NAME;
 }
 // populates this object with data it reads from stream
 public void readSQL(SQLInput stream, String sqlType) throws SQLException {
   this.isbn = stream.readString();
   this.title = stream.readString();
   this.author = stream.readString();
   this.edition = stream.readInt();
 }
 // writes this object to stream
 public void writeSQL(SQLOutput stream) throws SQLException {
   stream.writeString(this.isbn);
   stream.writeString(this.title);
   stream.writeString(this.author);
   stream.writeInt(this.edition);
 }
 public void print() {
   System.out.println("isbn=" + isbn);
   System.out.println("title=" + title);
   System.out.println("author=" + author);
   System.out.println("edition=" + edition);
 }

}


 </source>
   
  
 
  



Inserting an OBJECT Value into an Oracle Table

   <source lang="java">
 

import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Main {

 public static void main(String[] argv) throws Exception {
   String driverName = "oracle.jdbc.driver.OracleDriver";
   Class.forName(driverName);
   String serverName = "127.0.0.1";
   String portNumber = "1521";
   String sid = "mydatabase";
   String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
   String username = "username";
   String password = "password";
   Connection connection = DriverManager.getConnection(url, username, password);
   Statement stmt = connection.createStatement();
   stmt.execute("CREATE TYPE object2 AS OBJECT(col_string2 VARCHAR(30), col_integer2 NUMBER)");
   stmt.execute("CREATE TYPE object1 AS OBJECT(col_string1 VARCHAR(30), col_integer2 object2)");
   stmt.execute("CREATE TABLE object1_table(col_integer NUMBER, col_object1 object1)");
   stmt.execute("INSERT INTO object1_table VALUES(1, object1("str1", object2("obj2str1", 123)))");
 }

}


 </source>
   
  
 
  



OracleDataSource Demo

   <source lang="java">

import java.sql.*; import oracle.jdbc.pool.*; public class TestThinDSApp {

 public static void main(String args[]) throws ClassNotFoundException,
     SQLException {
   // These settings are typically configured in JNDI
   // so they a implementation specific
   OracleDataSource ds = new OracleDataSource();
   ds.setDriverType("thin");
   ds.setServerName("dssw2k01");
   ds.setPortNumber(1521);
   ds.setDatabaseName("orcl"); // sid
   ds.setUser("scott");
   ds.setPassword("tiger");
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt
       .executeQuery("select "Hello Thin driver data source tester "||"
           + "initcap(USER)||"!" result from dual");
   if (rset.next())
     System.out.println(rset.getString(1));
   rset.close();
   stmt.close();
   conn.close();
 }

}


 </source>
   
  
 
  



Register custome type to Oracle

   <source lang="java">

import java.util.*; import java.io.*; import java.sql.*; public class InsertCustomType2_Oracle {

 public static Connection getConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "name";
   String password = "pass";
   Class.forName(driver); // load Oracle driver
   return DriverManager.getConnection(url, username, password);
 }
 public static void main(String[] args) {
   String id = "001";
   String isbn = "1234567890";
   String title = "Java Oracle";
   String author = "jexp";
   int edition = 1;
   // create the Book object
   Book book = new Book(isbn, title, author, edition);
   book.print();
   Connection conn = null;
   PreparedStatement pstmt = null;
   try {
     conn = getConnection();
     // create type map
     java.util.Map map = conn.getTypeMap();
     System.out.println("map=" + map);
     map.put("BOOK", Class.forName("Book"));
     System.out.println("map=" + map);
     String insert = "insert into book_table(ID, BOOK) values(?, ?)";
     pstmt = conn.prepareStatement(insert);
     pstmt.setString(1, id);
     pstmt.setObject(2, book);
     pstmt.executeUpdate();
   } catch (Exception e) {
     e.printStackTrace();
     System.exit(1);
   } finally {
     try {
       pstmt.close();
       conn.close();
     } catch (SQLException e) {
       e.printStackTrace();
     }
   }
 }

} /**

* A class to hold a copy of "BOOK" data type
*/

class Book implements SQLData, Serializable {

 public static final String SQL_TYPE_NAME = "BOOK";
 public String isbn;
 public String title;
 public String author;
 public int edition;
 public Book() {
 }
 public Book(String isbn, String title, String author, int edition) {
   this.isbn = isbn;
   this.title = title;
   this.author = author;
   this.edition = edition;
 }
 // retrieves the fully qualified name of the SQL
 // user-defined type that this object represents.
 public String getSQLTypeName() {
   return SQL_TYPE_NAME;
 }
 // populates this object with data it reads from stream
 public void readSQL(SQLInput stream, String sqlType) throws SQLException {
   this.isbn = stream.readString();
   this.title = stream.readString();
   this.author = stream.readString();
   this.edition = stream.readInt();
 }
 // writes this object to stream
 public void writeSQL(SQLOutput stream) throws SQLException {
   stream.writeString(this.isbn);
   stream.writeString(this.title);
   stream.writeString(this.author);
   stream.writeInt(this.edition);
 }
 public void print() {
   System.out.println("isbn=" + isbn);
   System.out.println("title=" + title);
   System.out.println("author=" + author);
   System.out.println("edition=" + edition);
 }

}


 </source>
   
  
 
  



Serialized And Deserialize Object Oracle

   <source lang="java">

/* Code revised from JDBC Recipes: A Problem-Solution Approach

  1. By Mahmoud Parsian
  2. ISBN: 1-59059-520-3
  3. 664 pp.
  4. Published: Sep 2005

publisher: apress.ru

  • /

import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import oracle.sql.BLOB; /**** CREATE TABLE java_objects (object_id NUMBER, object_name varchar(128), object_value BLOB DEFAULT empty_blob(), primary key (object_id)); SQL> desc java_objects;

Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OBJECT_ID                                 NOT NULL NUMBER
OBJECT_NAME                                        VARCHAR2(128)
OBJECT_VALUE                                       BLOB

SQL> select SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER from user_sequences; SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER


---------- ---------- ------------ -----------

ID_SEQ 1 1.0000E+27 1 21 JAVA_OBJECT_SEQUENCE 1 1.0000E+27 1 1

  • /

public class Main {

 public static void main(String[] args) throws Exception {
   String WRITE_OBJECT_SQL = "BEGIN "
       + "  INSERT INTO java_objects(object_id, object_name, object_value) "
       + "  VALUES (?, ?, empty_blob()) " + "  RETURN object_value INTO ?; " + "END;";
   String READ_OBJECT_SQL = "SELECT object_value FROM java_objects WHERE object_id = ?";
   Connection conn = getOracleConnection();
   conn.setAutoCommit(false);
   List<Object> list = new ArrayList<Object>();
   list.add("This is a short string.");
   list.add(new Integer(1234));
   list.add(new java.util.Date());
   // write object to Oracle
   long id = 0001;
   String className = list.getClass().getName();
   CallableStatement cstmt = conn.prepareCall(WRITE_OBJECT_SQL);
   cstmt.setLong(1, id);
   cstmt.setString(2, className);
   cstmt.registerOutParameter(3, java.sql.Types.BLOB);
   cstmt.executeUpdate();
   BLOB blob = (BLOB) cstmt.getBlob(3);
   OutputStream os = blob.getBinaryOutputStream();
   ObjectOutputStream oop = new ObjectOutputStream(os);
   oop.writeObject(list);
   oop.flush();
   oop.close();
   os.close();
   // Read object from oracle
   PreparedStatement pstmt = conn.prepareStatement(READ_OBJECT_SQL);
   pstmt.setLong(1, id);
   ResultSet rs = pstmt.executeQuery();
   rs.next();
   InputStream is = rs.getBlob(1).getBinaryStream();
   ObjectInputStream oip = new ObjectInputStream(is);
   Object object = oip.readObject();
   className = object.getClass().getName();
   oip.close();
   is.close();
   rs.close();
   pstmt.close();
   conn.rumit();
   // de-serialize list a java object from a given objectID
   List listFromDatabase = (List) object;
   System.out.println("[After De-Serialization] list=" + listFromDatabase);
   conn.close();
 }
 private static Connection getHSQLConnection() throws Exception {
   Class.forName("org.hsqldb.jdbcDriver");
   System.out.println("Driver Loaded.");
   String url = "jdbc:hsqldb:data/tutorial";
   return DriverManager.getConnection(url, "sa", "");
 }
 public static Connection getMySqlConnection() throws Exception {
   String driver = "org.gjt.mm.mysql.Driver";
   String url = "jdbc:mysql://localhost/demo2s";
   String username = "oost";
   String password = "oost";
   Class.forName(driver);
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }
 public static Connection getOracleConnection() throws Exception {
   String driver = "oracle.jdbc.driver.OracleDriver";
   String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
   String username = "userName";
   String password = "password";
   Class.forName(driver); // load Oracle driver
   Connection conn = DriverManager.getConnection(url, username, password);
   return conn;
 }

}


 </source>
   
  
 
  



Test Data Encryption Integrity

   <source lang="java">

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; public class TestDataEncryptionIntegrity {

 public static void main(String[] argv) throws Exception {
   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
   Properties prop = new Properties();
   prop.setProperty("user", "scott");
   prop.setProperty("password", "tiger");
   prop.setProperty("oracle.net.encryption_client", "REQUIRED");
   prop.setProperty("oracle.net.encryption_types_client", "( RC4_40 )");
   prop.setProperty("oracle.net.crypto_checksum_client", "REQUIRED");
   prop.setProperty("oracle.net.crypto_checksum_types_client", "( MD5 )");
   Connection conn = DriverManager.getConnection(
       "jdbc:oracle:thin:@dssw2k01:1521:orcl", prop);
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt
       .executeQuery("select "Hello Thin driver Encryption & Integrity "
           + "tester "||USER||"!" result from dual");
   while (rset.next())
     System.out.println(rset.getString(1));
   rset.close();
   stmt.close();
   conn.close();
 }

}


 </source>
   
  
 
  



Test DataSource LookUp

   <source lang="java">

/* Java Programming with Oracle JDBC by Donald Bales ISBN: 059600088X Publisher: O"Reilly

  • /

import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class TestDSLookUp {

 public static void main(String[] args) throws SQLException, NamingException {
   Context ctx = null;
   try {
     Properties prop = new Properties();
     prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,
         "com.sun.jndi.fscontext.RefFSContextFactory");
     prop.setProperty(Context.PROVIDER_URL, "file:/JNDI/JDBC");
     ctx = new InitialContext(prop);
   } catch (NamingException ne) {
     System.err.println(ne.getMessage());
   }
   DataSource ds = (DataSource) ctx.lookup("joe");
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt
       .executeQuery("select "Hello Thin driver data source tester "||"
           + "initcap(USER)||"!" result from dual");
   if (rset.next())
     System.out.println(rset.getString(1));
   rset.close();
   stmt.close();
   conn.close();
 }

}


 </source>
   
  
 
  



Test OCINet 8 App

   <source lang="java">

/* Java Programming with Oracle JDBC by Donald Bales ISBN: 059600088X Publisher: O"Reilly

  • /

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestOCINet8App {

 // Test the Net8 syntax
 public static void main(String args[]) throws ClassNotFoundException,
     SQLException {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   // or you can use:
   //  DriverManager.registerDriver(
   //   new oracle.jdbc.driver.OracleDriver());
   Connection conn = DriverManager.getConnection(
       "jdbc:oracle:oci8:@(DESCRIPTION = "
           + "(ADDRESS_LIST = (ADDRESS = "
           + "(PROTOCOL = TCP)(HOST = dssw2k01)(PORT = 1521)))"
           + "(CONNECT_DATA = (SERVICE_NAME = dssw2k01)))",
       "scott", "tiger");
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt
       .executeQuery("select "Hello OCI driver tester "||USER||"!" result from dual");
   while (rset.next())
     System.out.println(rset.getString(1));
   rset.close();
   stmt.close();
   conn.close();
 }

}


 </source>
   
  
 
  



Test Oracle JDBC Driver Installation

   <source lang="java">

public class TestJDBCDriverInstallation_Oracle {

 public static void main(String[] args) {
   System.out.println("TestJDBCDriverInstallation_Oracle begin");
   try {
     String className = "oracle.jdbc.driver.OracleDriver";
     Class driverObject = Class.forName(className);
     System.out.println("driverObject=" + driverObject);
     System.out.println("your installation of JDBC Driver OK.");
   } catch (Exception e) {
     // your installation of JDBC Driver Failed
     System.out.println("Failed: JDBC Driver Error: " + e.getMessage());
   }
   System.out.println("TestJDBCDriverInstallation_Oracle end.");
 }

}


 </source>
   
  
 
  



Test SSL

   <source lang="java">

/* Java Programming with Oracle JDBC by Donald Bales ISBN: 059600088X Publisher: O"Reilly

  • /

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; public class TestSSL {

 public static void main(String[] argv) throws Exception {
   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
   Properties prop = new Properties();
   prop.setProperty("user", "scott");
   prop.setProperty("password", "tiger");
   // THIS DOES NOT WORK YET
   prop
       .setProperty("oracle.net.ssl_cipher_suites",
           "(ssl_rsa_export_with_rc4_40_md5, ssl_rsa_export_with_des40_cbc_sha)");
   prop.setProperty("oracle.net.ssl_client_authentication", "false");
   prop.setProperty("oracle.net.ssl_version", "3.0");
   prop.setProperty("oracle.net.encryption_client", "REJECTED");
   prop.setProperty("oracle.net.crypto_checksum_client", "REJECTED");
   Connection conn = DriverManager
       .getConnection(
           "jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS)(HOST = dssw2k01)(PORT = 2484))) (CONNECT_DATA = (SERVICE_NAME = DSSW2K01)))",
           prop);
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt.executeQuery("select "Hello Thin driver SSL "
       + "tester "||USER||"!" result from dual");
   while (rset.next())
     System.out.println(rset.getString(1));
   rset.close();
   stmt.close();
   conn.close();
 }

}


 </source>