10 April 2008

AppQuery: Akses Java ke semua jenis Database



Sistem baru, dimulai dengan menyelesaikan ini.
Sebenarnya banyak hal yang ingin dituliskan dan dijelaskan, karena agak kompleksnya aplikasi ini, tapi malah bingung. Jadi ingat apa yang dikatakan Budi Rahardjo, kalo penulisan orang teknik Indonesia tidak menarik, lebih mirip laporan praktikum daripada sebuah karya ilmiah, dengan hal teknis tapi dengan bahasa mirip bahasa mesin, cuma berisi beberapa kata tentang fungsinya, setelah itu disambung dengan kodenya. Padahal 50% dari pengerjaan proyek seharusnya digunakan untuk pembuatan dokumentasi dan help yang menarik dan mudah dimengerti. Dan konsultan luar negeri dibayar mahal karena penulisan mereka yang rapi disesuikan dengan target pembacanya, orang teknis, konsumen pemakai, atau investor. Satu lagi, kalo membuat blog, yang penting kuantitas, baru kulaitas. Buat tulisan yang banyak dulu, baru memikirkan kualitasnya. Blog ini juga begitu, sering update, kalo perlu sehari dua kali, sebulan sampai puluhan, sekarang baru mulai agak serius, dan efeknya langsung terasa. Trafik dari google langsung meningkat, seperti untuk pembahasan ozeki. Tapi biarkan saja, namanya juga belajar.

Mulai aja deh.
Ini cuma sebuah program pribadi yang tadinya cuma untuk mengetes koneksi java dengan sql server pada saat beberapa tahun lalu (Siapa aja ya, yang dulu minta, kayaknya banyak yang ngaku deh.....), akhirnya ditambahkan dengan beberapa keunikan. Aplikasi ini bisa digunakan untuk mengambil data dari berbagai macam database dengan cara yang mudah dan terstandardisasi, karena prinsipnya yang sama....
+ Driver SQL Server 2000 dan Driver mysql
Berbasis driver, sehingga cuma perlu tahu user dan password di database tanpa perlu ada konfigurasi tambahan. Bahkan drivernya sendiri sudah ada dalam bentuk class di aplikasi ini. Tinggal masukkan username, password, ketik nama database-nya, klik update database. Kalo koneksi berhasil, langsung ada pilihan tabel yang akan dilihat dari combobox dan perintah query yang bisa dijalankan.
sqlServerDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String sqlServerUrl="jdbc:microsoft:sqlserver:"; //jdbc:microsoft:sqlserver://localhost;DatabaseName="+db;

mySqlDriver="com.mysql.jdbc.Driver";
mySqlUrl="jdbc:mysql:";//jdbc:mysql://localhost/dbme

+ ODBC
Menggunakan fasilitas dari windows Data source yang bisa digunakan untuk menghubungkan berbagai jenis database, dari oracle sampai file teks biasa. Yang harus dilakukan adalah membuat datasource dari Administrative tools di control panel, pilih jenis database yang akan dikoneksikan, lakukan konfigurasi sampai selesai. Setelah itu masukkan nama Datasource-nya di aplikasi ini, langsung update database. Apabila koneksi berhasil, pilihan tabel yang bisa dipilih langsung keluar.
odbcDriver="sun.jdbc.odbc.JdbcOdbcDriver";
odbcUrl="jdbc:odbc:"; //jdbc:odbc:sqlKuliah


+ koneksi lainnya.
Bisa dengan mengubah setting yang disediakan, atau dengan driver yang bernar-benar baru. Misalkan, untuk koneksi mysql tapi dengan server di komputer yang berbeda, bukan di localhost, atau dengan port yang berbeda. Bisa juga misalkan dengan menambahkan driver oracle dengan setting path-nya, kemudian mengetikkan setting koneksi, database url, username dan password, di aplikasi ini.

Khusus untuk pembelajaran, aplikasi untuk membuat saya belajar tentang banyak hal, diantaranya:
+ koneksi ke odbc
Bisa melakukan koneksi ke odbc dengan berbagai macam jenis database yang berbeda, dengan kelemahan harus menambahkan datasource di setiap komputer untuk koneksi database. Selain itu juga lebih lambat dari driver biasa, karena adanya bantuan sistem operasi sebagai penghubung ke database.
+ koneksi ke driver database
Aplikasi ini membuktikan koneksi java ke database apapun, memiliki cara pemanggilan yang sama persis, dengan driver yang dibuat oleh vendor yang berbeda sesuai kebutuhan aplikasi. Jadi bisa saja Sebuah aplikasi java tidak dikhususkan untuk database tertentu, dengan konfigurasi berasal dari file teks atau registry, dan bisa di-setting secara runtime.
melakukan operasi database
Disediakan sebuah teksboks untuk mencoba perintah query berjenis execute query, bukan update query. yaitu perintah query yang menghasilkan record untuk ditampilkan di jtable, dengan perintah select dan variasinya.
+ manipulasi JTabel
Sekali lagi, sangat mudah. Untuk membuat object dari JTable dan melakukan manipulasi bentuk dan isinya secara runtime. Untuk aplikasi ini, JTable bisa menyesuaikan dengan kebutuhan query, berapapun kolom dari tabel dan record yang akan ditampilkan, bisa langsung ditampilkan.
+ copy data ke clipboard sistem operasi
Cuma sebuah contoh paling sederhana dari copy-paste. Dengan mengkopikan data di JTable yang dipilih untuk kemudian bisa dipastekan di aplikasi yang lain misalkan notepad. Sebenarnya di Java bisa saja data yang dikopikan berupa obyek dengan tipe data lain misalkan gambar untuk dipastekan di mspaint.Untuk kebutuhan aplikasi ini cuma perlu tipe data string saja karena berupa teks biasa.
Clipboard c = this.getToolkit( ).getSystemClipboard( );
c.setContents(new copyData((String)tabel.getValueAt(tabel.getSelectedRow(),tabel.getSelectedColumn())),
new ClipboardOwner( ) { public void lostOwnership(Clipboard c,Transferable t){}

dari kelas copyData:
class copyData implements Transferable {
DataFlavor FLAVOR= new DataFlavor("application/x-java-serialized-object; class=java.lang.String","String");
DataFlavor[ ] FLAVORS = new DataFlavor[ ] { FLAVOR };
String str;
public copyData(String str) {
this.str = str;
}
public DataFlavor[ ] getTransferDataFlavors( ) { return FLAVORS; }
public boolean isDataFlavorSupported(DataFlavor f){return f.equals(FLAVOR);}
public Object getTransferData(DataFlavor f)
throws UnsupportedFlavorException {
if (!f.equals(FLAVOR)) throw new UnsupportedFlavorException(f);
return str;
}
}


+ Aplikasi yang bersifat portable, bebas sistem operasi
Bukan jamannya lagi aplikasi portable yang jalan dari flashdisk, tapi cuma jalan di os tertentu (xixixixi, sebenarnya malah sangat tergantung di aplikasi seperti ini). Untuk java, apabila sudah dibentuk dalam bentuk jar, maka bisa dijalankan dimanapun yang tersedia JRE, Windows, Linux, Mac OS. Khusus untuk aplikasi ini, karena di-compile dengan JDK versi lama, 1.4.2, maka bisa dijalankan di semua versi JDK terbaru. Selain itu semua library dan driver SQL Server dan My SQL sudah ada dalam satu paket tanpa perlu setting path segala macam. Jadi, dengan syarat JRE yang beres beserta konfigurasi asosiasi file dengan tipe jar yang benar, maka tinggal diklik dua kali, langsung jalan dan siap bekerja, tanpa setting apapun, tanpa melihat sistem operasi dia berjalan. Dengan cuma satu buah file jar, selain itu ada versi exe untuk windows, maka file java bisa langsung dijalankan tanpa masalah. Karena class java cuma tergantung pada JRE, bukan sistem operasi maupun hardware komputer.

Susunan file utama di jar:
File name Ext
------------------------------------------------------------------------------------------
appQuery jarContent
lihatTabel class
lihatTabel form
lihatTabel java
lihatTabel$copyData class
com\
com\microsoft\
com\microsoft\jdbc\
com\microsoft\jdbc\sqlserver\
SQLServerDriver class
com\mysql\
com\mysql\jdbc\
Driver class
org\
org\gjt\
org\gjt\mm\
org\gjt\mm\mysql\
Driver class

versi jar, didalamnya sudah termasuk sourcecode java dan form netbeans, driver mysql dan sql server, bisa dibongkar dengan 7zip dan sejenisnya, karena kompresi yang mirip antara jar dan zip. selain itu bisa jalan dengan berbagai os.


versi exe, bisa langsung dijalankan di windows, dibuat dengan j2exe.

Sedangkan untuk source codenya, ada di posting selanjutnya.....

7 °C:

Anonymous said...

om-om,,source code aplikasi AppQuery ada yg project netbeannya nggak,, kalo ada boleh minta ngga?

emang dulu bikinnya pake apa?? kalo pake netbean kan enak ada GUInya..


thanks

ery

eryaryasa@yahoo.co.id

om4gus said...

Program ini dikembangkan dengan Netbeans versi 3.6 yang berbasis folder, bukan berbasis project seperti versi diatas 4.0
Untuk source code, kita kembangkan sedikit imajinasi. Dibagian download jar sudah ada keterangannya. Tinggal download, buka/ ekstrak dengan winrar dan sejenisnya

Anonymous said...

ok deh om thanks banget,, programnya oke punya,, ngebantu kerjaan saya,,

thanks banget yach..

halo... said...

om, gimana om buka forum ja biar kita2 yang new be bisa lebih luas konsultasinya,..hehehe...hanya ususaln...om, bisa diajarin ga' cara mengatur tabel di java, soalnya tampilannya brantakan om, kalo panjang tulisan di tabel-nya, cuma di tampilin pake titik2,....makasih om

om4gus said...

@ halo
Saya bukan orang yang bisa bertahan lama dalam satu hal secara konsisten. Jadi, kalo untuk forum sepertinya tidak bisa diwujudkan.
Coba gunakan perintah
tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
sehingga kalo melebar dia akan membuat scrollbar, sehingga tidak terlalu sempit lagi yang menyebabkan cuma menampilkan titik-titik.

Hangs Breaker said...

Mantab

Nein Raka said...

link nya ga bisa di download, minta update lagi om

Post a Comment