4Query untuk Query ke Berbagai Jenis Database
- March 3rd, 2010
- Posted in Programming
- Write comment
Pada awalnya, appQuery cuma digunakan untuk membuat aplikasi yang bisa melakukan tes koneksi ke database yang berbeda. Pada perkembangannya, perlu banyak fungsi tambahan agar bisa digunakan sesuai dengan kebutuhan. Akhirnya dibuatlah 4Query.
Tujuan dari proyek ini cuma beberapa hal sederhana saja:
# Melakukan tes koneksi ke berbagai database dengan URL Database yang disediakan bisa diubah
# Menjalankan dan tes query dengan hasil yang langsung ditampilkan
# Membuat Aplikasi sederhana dan ringan berbasis java sehingga mudah dipakai untuk melihat obyek di database. Itulah gunanya dipilih interface tanpa titlebar yang dipindah dengan cara drag, menghilangkan dan menampilkan dari systray, serta always on top
# Membuat contoh dan tes koneksi apabila akan membuat aplikasi java ke database
Feature dari program ini diantaranya:* Bisa melakukan koneksi ke berbagai database. Database yang didukung adalah: MS SQL Server / Express, MySQL, Oracle, PostgreSQL, sedangkan database yang lain bisa menggunakan ODBC.
* Bisa mengubah database URL dengan memilih koneksi Custom. Misalkan untuk melakukan koneksi ke MySql yang tidak berada di Localhost
* Semua driver dan library yang digunakan sudah disertakan dalam program.
+ Bisa mengambil daftar semua database yang tersedia di server ke dalam combobox yang bisa langsung dipilih. Oracle tidak menyediakan database metadata sehingga tidak bisa mengeluarkan database yang ada.
* Mengambil daftar tabel yang tersedia di database.
* Menampilkan hasil dari Query Editor di JTable
+ Menyimpan hasil perubahan data dari JTable ke database. Caranya, Ubah data di JTable, kemudian klik Save Data. Data akan bisa diubah apabila diambil langsung dari combobox daftar tabel, bukan dari hasil query box.
+ Menghapus baris terpilih di JTable dari database dengan tombol Delete Data
* Mengkopi isi data di JTable untuk dipindahkan ke aplikasi lain melalui Clipboard System dengan tombol Copy Data
+ memindahkan Window dengan cara mendrag. Ini untuk membuat aplikasi tanpa TitleBar
+ Membuat Tray Icon di Systray
+ Membuat window menjadi AlwaysOnTop
Ps:
* Perbaikan feature sebelumnya
+ Penambahan feature baru
Source Code
Connection con; Statement stmt; String perintah; DefaultTableModel model; public void connectDriver() { //String dbDrv = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //String dbUrl = "jdbc:microsoft:sqlserver://localhost;DatabaseName="+db; try { Class.forName(tDriver.getText()); try { con = DriverManager.getConnection(tKoneksi.getText(), tUser.getText(), String.valueOf(tPass.getPassword())); } catch (com.mysql.jdbc.CommunicationsException communicationsException) { } stmt = con.createStatement(); lStatus.setText("Driver Connected"); } catch (Exception ce) { System.out.println(ce.toString() + "1 " + tPass.getPassword().toString()); lStatus.setText("Failure Connection: " + ce.toString());//lStatus.getText()+"\n"+ tabel.setModel(model = new DefaultTableModel()); cbTabel.setModel(new javax.swing.DefaultComboBoxModel()); } } |
Membuat koneksi ke Database
private static final String sqlServerDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; private static final String sqlServerUrl = "jdbc:microsoft:sqlserver:"; //jdbc:microsoft:sqlserver://localhost;DatabaseName="+db; private static final String mySqlDriver = "com.mysql.jdbc.Driver"; private static final String mySqlUrl = "jdbc:mysql:";//jdbc:mysql://localhost/untag private static final String oracleDriver = "oracle.jdbc.driver.OracleDriver"; private static final String oracleUrl = "jdbc:oracle:thin:"; //jdbc:oracle:thin:@machine_name:1521:database_name", "scott" private static final String pgsqlDriver = "org.postgresql.Driver"; private static final String pgsqlUrl = "jdbc:postgresql:"; //jdbc:postgresql://host:port/database private static final String odbcDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; private static final String odbcUrl = "jdbc:odbc:"; //jdbc:odbc:sqlKuliah private void setDatabaseUrl() { lDb.setText("DB/Table"); tDriver.setEnabled(false); tKoneksi.setEnabled(false); tPass.setEnabled(true); String setDB = null; try { setDB = cbDb.getSelectedItem().toString(); } catch (Exception e) { setDB = ""; } switch (cbDriver.getSelectedIndex()) { case 0://MySQL tDriver.setText(lihatTabel.mySqlDriver); if (setDB.equals("")) { tKoneksi.setText(lihatTabel.mySqlUrl + "//localhost/"); } else { tKoneksi.setText(lihatTabel.mySqlUrl + "//localhost/" + cbDb.getSelectedItem()); } break; case 1://SQL Server tDriver.setText(lihatTabel.sqlServerDriver); if (setDB.equals("")) { tKoneksi.setText(lihatTabel.sqlServerUrl + "//localhost"); } else { tKoneksi.setText(lihatTabel.sqlServerUrl + "//localhost;DatabaseName=" + cbDb.getSelectedItem()); } break; case 2://Oracle tDriver.setText(lihatTabel.oracleDriver); if (setDB.equals("")) { tKoneksi.setText(lihatTabel.oracleUrl + "@localhost:1521:XE"); } else { //jdbc:oracle:thin:@machine_name:1521:database_name tKoneksi.setText(lihatTabel.oracleUrl + "@localhost:1521:XE"); //tKoneksi.setText(lihatTabel.oracleUrl + "@localhost:1521:XE:" + cbDb.getSelectedItem()); } break; case 3://PGSQL tDriver.setText(lihatTabel.pgsqlDriver); if (setDB.equals("")) { tKoneksi.setText(lihatTabel.pgsqlUrl + "//localhost/"); } else { tKoneksi.setText(lihatTabel.pgsqlUrl + "//localhost/" + cbDb.getSelectedItem()); } tKoneksi.setEnabled(true); break; case 4://odbc tDriver.setText(lihatTabel.odbcDriver); tKoneksi.setText(lihatTabel.odbcUrl + ""); tKoneksi.setEnabled(true); //tPass.setText(""); //lDb.setText("DS Name"); break; case 5://custom default://Custom tDriver.setEnabled(true); tKoneksi.setEnabled(true); break; } getTables(); } |
Menentukan Database URL tergantung koneksi dan driver yang digunakan
private void getDatabases() { cbDb.setModel(new javax.swing.DefaultComboBoxModel()); connectDriver(); getTables(); java.sql.ResultSet rsDb = null; try { rsDb = con.getMetaData().getCatalogs(); for (; rsDb.next();) { cbDb.addItem(rsDb.getString("TABLE_CAT")); } rsDb = con.getMetaData().getSchemas(); for (; rsDb.next();) { System.out.println(rsDb.getString("TABLE_SCHEM")); } ///cbDb.setSelectedIndex(0); } catch (Exception ex) { //Logger.getLogger(lihatTabel.class.getName()).log(Level.SEVERE, null, ex); } } |
Mengambil daftar database yang tersedia di server database yang dihubungkan
private void getTables() { try { connectDriver(); String str = ""; if (cbDb.getSelectedItem().toString().equals("")) { str = null; } else { str = cbDb.getSelectedItem().toString(); } java.sql.ResultSet rsTabel = con.getMetaData().getTables(str, null, null, new String[]{"TABLE"}); cbTabel.setModel(new javax.swing.DefaultComboBoxModel()); for (; rsTabel.next();) { cbTabel.addItem(rsTabel.getString("TABLE_NAME")); } cbTabel.setSelectedIndex(-1); lStatus.setText(lStatus.getText() + "\nChange Database success"); } catch (Exception e) { System.err.println(e.toString()); lStatus.setText(lStatus.getText() + "\nError Connect to Database: " + e.toString()); } } |
Mendapatkan daftar tabel yang ada dalam database
private void setJTable() { try { //con.setCatalog(cbDb.getSelectedItem().toString()); tabel.setModel(model = new DefaultTableModel()); tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); perintah = tQuery.getText(); if (stmt.execute(perintah)) { java.sql.ResultSet hasil = stmt.executeQuery(perintah); java.sql.ResultSetMetaData rsKolom = hasil.getMetaData(); for (int I = 1; I <= rsKolom.getColumnCount(); I++) { model.addColumn(rsKolom.getColumnName(I).trim()); } Vector V = null; for (int I = 0; hasil.next(); I++) { V = new Vector(); for (int J = 1; J <= hasil.getMetaData().getColumnCount(); J++) { Object obj = null; try { obj = hasil.getObject(J); } catch (SQLException sQLException) { } try { V.add(obj.toString()); } catch (Exception e) { V.add(""); } } model.addRow(V); } } else { } lStatus.setText(lStatus.getText() + "\nUpdate Table success"); } catch (Exception ex) { System.err.println(ex.toString()); lStatus.setText(lStatus.getText() + "\nError Execute Query: " + ex.toString()); } } |
menampilkan isi data dari tabel di database ke JTable
private void tSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tSaveActionPerformed perintah = "\nupdate " + cbTabel.getSelectedItem() + " set " + tabel.getColumnName(tabel.getSelectedColumn()) + " = '" + (String) tabel.getValueAt(tabel.getSelectedRow(), tabel.getSelectedColumn()) + "' " + "where "; for (int I = 0; I < tabel.getColumnCount(); I++) { if (tabel.getSelectedColumn() != I) { perintah += (tabel.getColumnName(I) + " = '" + tabel.getValueAt(tabel.getSelectedRow(), I) + "' "); if (I < tabel.getColumnCount() - 1) { perintah += " AND "; } } } try { if (stmt.execute(perintah)) { } else { lStatus.setText(lStatus.getText() + "\nSuccess: " + "" + perintah); } } catch (Exception ex) { lStatus.setText(lStatus.getText() + "Error Execute Query: " + "" + perintah + "\n" + ex); } cbTabelActionPerformed(evt); }//GEN-LAST:event_tSaveActionPerformed |
Menyimpan isi JTable ke Database
private void tDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tDeleteActionPerformed perintah = "\nDelete from " + cbTabel.getSelectedItem() + " " //+ tabel.getColumnName(tabel.getSelectedColumn()) + " = '" //+ (String) tabel.getValueAt(tabel.getSelectedRow(), tabel.getSelectedColumn()) + "' " + "where "; for (int I = 0; I < tabel.getColumnCount(); I++) { //if (tabel.getSelectedColumn() != I) { perintah += (tabel.getColumnName(I) + " = '" + tabel.getValueAt(tabel.getSelectedRow(), I) + "' "); if (I < tabel.getColumnCount() - 1) { perintah += " AND "; } //} } //lStatus.setText(lStatus.getText() + perintah); try { if (stmt.execute(perintah)) { } else { lStatus.setText(lStatus.getText() + "\nSuccess: " + "" + perintah); } } catch (Exception ex) { lStatus.setText(lStatus.getText() + "\nError Execute Query: " + "" + perintah + "\n" + ex); } cbTabelActionPerformed(evt); }//GEN-LAST:event_tDeleteActionPerformed |
Menghapus baris terpilih di JTable dari database
private void tCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tCopyActionPerformed Clipboard c = this.getToolkit().getSystemClipboard(); c.setContents(new copyData((String) tabel.getValueAt(tabel.getSelectedRow(), tabel.getSelectedColumn())), new ClipboardOwner() { @Override public void lostOwnership(Clipboard c, Transferable t) { } }); }//GEN-LAST:event_tCopyActionPerformed 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; } @Override public DataFlavor[] getTransferDataFlavors() { return FLAVORS; } @Override public boolean isDataFlavorSupported(DataFlavor f) { return f.equals(FLAVOR); } @Override public Object getTransferData(DataFlavor f) throws UnsupportedFlavorException { if (!f.equals(FLAVOR)) { throw new UnsupportedFlavorException(f); } return str; } } |
Mengkopi isi data
int xStart; int yStart; private void formMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseDragged setLocation(evt.getLocationOnScreen().x - xStart, evt.getLocationOnScreen().y - yStart); }//GEN-LAST:event_formMouseDragged private void formMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMousePressed xStart = evt.getX(); yStart = evt.getY(); }//GEN-LAST:event_formMousePressed |
Memindahkan JFrame dengan cara drag
SystemTray tray; TrayIcon trayIcon; tTopActionPerformed(null); tray = SystemTray.getSystemTray(); setIconImage(new ImageIcon(getClass().getResource("icon.jpg")).getImage()); trayIcon = new TrayIcon(getIconImages().get(0).getScaledInstance(tray.getTrayIconSize().width, tray.getTrayIconSize().height, 0)); trayIcon.addMouseListener(new MouseListener() { @Override public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { setVisible(!isVisible()); mShow.setState(isVisible()); } } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } }); trayIcon.setPopupMenu(pSystray); trayIcon.setImageAutoSize(true); tray.add(trayIcon); tabel.setModel(model = new DefaultTableModel()); |
Membuat tray icon
private void tTopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tTopActionPerformed setAlwaysOnTop(tTop.isSelected()); }//GEN-LAST:event_tTopActionPerformed |
Membuat AlwaysOnTop
Download program dalam bentuk exe yang bisa langsung dijalankan apabila sudah terintstall jre:
Source Code:
Download 4Query Source Code
appQuery bisa diambil dari blog yang lama:
appquery-akses-java-ke-semua-jenis.html
appquery-java-source-code.html
Project ini dibuat dengan jdk1.6.0_17 terbaru untuk bisa memanfaatkan feature seperti Systray. Dan menggunakan Netbeans 6.8 agar mudah diedit ulang oleh siapa saja.
Driver sudah disertakan dalam program, silakan mencari sendiri apabila sendiri dengan kata kunci jdbc driver di google, misalkan oracle jdbc driver.










tolong ya qrimin,,,,,
uhm kalo ada juga tolong qrim aplikasi form login ma daftar di web memakai netbeans trus yang dalam nya ada aplikasi random dan juga chatting makasih ya di tunggu bangeddd plisssssssssssssss
@achie
Really bad thing happen. Saya belum upload source code 4query ini. Nanti saya buat lagi & kamu yang pertama langsung saya kirim.
Kalau untuk chatting, sudah coba http://chat.om4g.us/ ? Dibuat dengan PHP + JQuery.
@achie
Sudah saya kirim source code nya. Makasih.
tolong kirimin source code project neatbean y kk…
aku lagi butuh banged nie coz lagi ada tugas akhir….
thanx bnged kk…
oya…gimana ya kl untuk buat koneksi combobox ke database…jadi list combox kita ambil dari databasenya…
@Wiebie
Source-nya sudah saya kirimkan ke email.
Ambil data terlebih dahulu kemudian tambahkan ke combo box dengan method addItem(), misalkan :
cbTabel.addItem(rsTabel.getString(“TABLE_NAME”));
wah.. kebetulan saya baru belajar java nih. klo boleh saya minta tolong kirim ke email yah, bisa buat tambahan bahan belajar. terima kasih…. ^_^
saya mmau belajar koneksi database make java nih, tolong dong source codenya kirimin ke amail saya,
thank’s
@achoel
Bisa belajar dari http://om4gus.blogspot.com/search/label/Java dan
http://blog.om4g.us/tag/java/
.
untuk koneksi ke database paling sederhana ada di http://om4gus.blogspot.com/2008/01/java-sql-input-data-sederhana.html
saya dapat tugas dari kampus membuat program
tetapi saya masih bingung dengan cara menampilkan isi tabel di database ke Jtabel.
minta contoh sourcecodenya…
+ source code dalam bentuk project netbeans program di atas …
makasih ..
@ve
saya sudah membuat contoh yg paling sederhana untuk jtable di http://om4gus.blogspot.com/2008/01/java-sql-input-data-sederhana.html
om, saya lagi ada tugas kuliah nih. tentang koneksi database pake java. boleh minta sourcenya?
sekalian sama link-link tentang koneksi database om.
makasih sebelumnya
untuk koneksi ke db lihat di komentar http://blog.om4g.us/2010/03/4query-untuk-query-ke-berbagai-jenis-database/comment-page-1/#comment-946#comment-762
mas bisa dikirim ke email gagh source code nya???agy butuh nih…trimakasih sebelumnya..sukses terus…
mas,
tau coding untuk share music n imuticon ga?
sya lagi buat aplikasi chatting ne mas,
tp menggunakan JFrame,
jadi rencana saya mau buat MP3 di aplikasi itu mas,
jadi,
disaat server menghidupkan pemutar music itu,
tu musicnya juga bisa terdengar di client,
ya kurang lebih seperti camfrog gt loh mas,
trus klu codin gutk buat imuticon tau g mas,
saolny sudah cari kesana sinii kagak nemu mas,
please help me,,
thanks,,
maaf klu bahasanya aneh,, ^_^
mas, saya mencoba coding yang save(update) tabel diatas,,knp masih error ya.
kalo misalnya kita punya tabel yang berisi data-data dari file excel dan ditampung/ditampilkan ke jTabel,, nah dari jTabel tersebut disimpan ke dalam database,, gimana ya caranya?? query buat menyimpannya itu seperti apa ya? terima kasih..