Day 11: Cached Rowset Di Oracle JDBC


Learning In HomeOriginal Date: 23 Januari 2009

Oracle 10g menyediakan dukungan rowset di library ocrs12.jar. Hari ini aku akan mencoba salah satu implementasi rowset yaitu cached rowset. Rowset ini memungkinkan aku melakukan pengolahan terhadap data tanpa perlu harus selalu memiliki koneksi aktif ke database. Sebagai latihan, aku akan membuat program untuk menyimpan isi tabel ke dalam sebuah file, kemudian menutup koneksi database, terus men-load isi file tersebut, melakukan modifikasi, baru menuliskan perubahan pada database.

Pertama-tama, aku akan membuat sebuah RowSet yang merupakan implementasi dari OracleCachedRowSet. Lalu aku akan menyimpan hasil execute-nya ke sebuah file, dalam hal ini adalah c:\latihan11.dat, seperti yang terlihat di kode berikut ini:


cachedRowset = new 
  OracleCachedRowSet();
cachedRowset.setUrl(
  "jdbc:oracle:oci:@latihan");
cachedRowset.setUsername(
  "jocki");
cachedRowset.setPassword(
  "password");
cachedRowset.setCommand(
  "SELECT l.* FROM latihan l");
cachedRowset.setReadOnly(
  false);
cachedRowset.setConcurrency(
  OracleCachedRowSet.
    CONCUR_UPDATABLE);
cachedRowset.execute();
		
FileOutputStream fos = new 
  FileOutputStream(
   "c:\\latihan11.dat");
ObjectOutputStream oos = 
  new ObjectOutputStream(fos);
oos.writeObject(cachedRowset);
oos.close();
fos.close();

Setelah itu, aku dapat membaca file latihan11.dat untuk mendapatkan RowSet yang berisi isi tabel latihan. Aku bahkan dapat melakukannya tanpa terkoneksi ke database. Contoh kodenya kira-kira seperti berikut ini:


FileInputStream fis = new 
  FileInputStream("c:\\latihan12.dat");
ObjectInputStream ois = new 
  ObjectInputStream(fis);
cachedRowset = (OracleCachedRowSet) 
  ois.readObject();
ois.close();
fis.close();

Seandainya saja aku melakukan perubahan pada RowSet, seperti menambahkan data baris baru:


cachedRowset.moveToInsertRow();			
cachedRowset.updateString(1, "DATA_BARU");
cachedRowset.insertRow();

Perubahan akan disesuaikan di database bila aku memberikan perintah berikut:


cachedRowset.acceptChanges();

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: