Day 7: Koneksi JDBC Ke Database Oracle


Learning In HomeOriginal Date: 19 Januari 2009

Oracle menyediakan driver JDBC di folder %ORACLE_HOME%/jdbc/lib. Oracle juga menyediakan library untuk JTA dan JNDI yang sudah diuji bersama Oracle JDBC driver di folder %ORACLE_HOME%/jlib. URL untuk koneksi database berada dalam format seperti berikut ini:


jdbc:oracle:driver_type:[username/password]@database_specifier

Nilai untuk driver_type dapat berupa thin, oci, atau kprb. Nilai database_specifier dapat berupa Oracle Net Connection descriptor, seperti:


(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=latihan)))

Untuk thin driver, database_specifier juga dapat berupa format berikut ini:


//host_name:port_number/service_name

Ini adalah contoh memulai koneksi dengan menggunakan Oracle Thin Driver (classes12.jar):


OracleDataSource ods = new OracleDataSource();
String url = "jdbc:oracle:thin:@//localhost:1521/
  latihan.localhost";
ods.setUser("jocki");
ods.setPassword("password");
ods.setURL(url);

Connection cn = ods.getConnection();

Untuk melakukan query, aku harus membuat Statement, dan mendapatkan ResultSet dari Statement tersebut, seperti pada contoh kode berikut:


Statement stmt = cn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT VALUE FROM LATIHAN");
while (rs.next()) {
  System.out.println(rs.getString(1));
}

Driver JDBC Oracle juga menyediakan API untuk mengetahui informasi metadata resultset, seperti pada contoh berikut:


OracleResultSet rs = (OracleResultSet)
   stmt.executeQuery("SELECT * FROM LATIHAN");
OracleResultSetMetaData metadata =
   (OracleResultSetMetaData) rs.getMetaData();
int columnCount = metadata.getColumnCount();

for (int i=1; i<=columnCount; i++) {
  System.out.println("Nama Kolom " + i +
     " = " + metadata.getColumnName(i));
  System.out.println("Tipe Kolom " + i +
    " = " + metadata.getColumnTypeName(i));
}

Untuk mengambil nilai kolom yang bertipe object, aku dapat menggunakan STRUCT atau memakai mapping class Java. Untuk memakai STRUCT, aku dapat menggunakan standar JDBC 2.0 java.sql.Struct, atau memakai class oracle.sql.STRUCT dari Oracle dengan fitur tambahan. Contohnya seperti pada kode berikut ini:


OracleResultSet or = (OracleResultSet)
  os.executeQuery("SELECT * FROM TBL_CIF");

while (or.next()) {
  STRUCT struct = (STRUCT) or.getObject(1);
}

Untuk mendapatkan masing-masing atribut dari STRUCT, aku bisa memakai getOracleAttributes(), seperti pada contoh:


Datum[] datum = struct.
  getOracleAttributes();
for (int i=0; i<datum.length; i++) {
  System.out.println(datum[i]);
}

Untuk memakai STRUCT sebagai parameter dari prepared statement, aku harus membuat StructDescriptor terlebih dahulu, seperti pada contoh berikut ini:


StructDescriptor structDesc =
   StructDescriptor.createDescriptor(
      "INDIVIDUAL_CIF", cn);
Object[] attr = {"ID-123", "ACC-123", "solid",
   "snake", new DATE("1985-03-13 00:00:00")};
STRUCT structData = new STRUCT(structDesc,
    cn, attr);

OraclePreparedStatement ops =
  (OraclePreparedStatement) cn.prepareStatement(
   "INSERT INTO TBL_CIF VALUES (?)");
ops.setObject(1,structData);
ops.executeUpdate();

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: