Skip to main content

Java-SQL: input data sederhana

kakashifull
Ini contoh input data sederhana dengan hanya menggunakan JTextfield dengan implementasi pada pemasukkan data dosen. Merupakan contoh lanjutan dari sebelumnya dengan tetap menekankan pada pemahaman dasar hubungan dengan java dengan database dengan cepat dan bersifat modular, terpisah dengan form lainnya. Penggunaan OOP tentu saja belum diterapkan.
Cobain aja......
1. Atur Database
- Tabel: dosen
- Field: kode(char), nama(varchar), alamat(varchar), tgl_lahir(smalldatetime)
2. Pilih jenis koneksi ke database MS SQL Server 2000:
a. Untuk odbc, buat datasource dengan nama koneksi(berlaku untuk semua jenis RDBMS)
b. Untuk driver, install terlebih dahulu driver koneksinya, pastikan classpath benar, harus tahu username dan password untuk koneksi.
3. Pengaturan Tampilan:
- Buat dengan class dasar JFrame Form
- JTextField: tkode, tNama, tAlamat, tTglLahir, tempatkan di jPanel1
- JButton: bSimpan, bHapus, bBatal, tempatkan didalam jPanel2
- JTable: tabel, tempatkan didalam jScrollPane1
Pengaturan Layout Manager:
JFrame tidak bisa diubah warnanya dengan mudah sehingga perlu penambahan JPanel terlebih dahulu. JFrame tetap menggunakan Layout default yaitu BorderLayout. Tambahkan jPanel1 dibagian "CENTER" untuk komponen dengan layout NULL, dan jPanel2 dibagian "SOUTH" untuk tempat tombol dengan layout GridLayout. Tempatkan JTable di dalam jScrollPane untuk memudahkan pengaturan tampilan tabel. Setelah itu pengaturan warna tampilan dan komponen.
4. Penambahan Kode:
a. tambahkan import
b. ubah Constructor dari class agar mengatur tampilan awal
c. tambahkan variabel global, pilih jenis koneksi di bagian ini
d. tambahkan Fungsi tambahan
- kosongkan, untuk mengosongkan komponen input
- testDriver, untuk mengatur koneksi db
- updatebel, untuk mengisi JTable tabel
- getTanggal dan setTanggal, untuk mengkonversi format tanggal dengan db
e. atur event dari komponen tombol: bSimpan, bHapus, bBatal
5. Masalah interaksi dengan pengguna program:
a. Mengatur aliran kursor, sehingga hanya menggunakan keyboard dan meminimalkan penggunaan mouse, sehingga lebih cepat dalam pengisian data. Gunakan requestFocus untuk komponen tujuan dengan menempatkan di bagian event actionPerformed komponen sebelumnya, atau keyPress untuk button.
b. Melakukan pencarian kode setelah penekanan Enter pada bagian kode, siap ditambah apabila belum ada, siap diedit atau dihapus apabila sudah ada.
c. Menampilkan isi baris dari tabel yang dipilih, dengan memanggil event actionPerformed dari tKode.
d. Memilih semua isi dari JTextField, apabila mendapat kursor, sehingga memudahkan untuk mengganti/menghapus isi sekaligus. Gunakan fungsi selectAll() dari komponen textfield di event focusGained

//Source Lengkapnya:
//4.a
import javax.swing.*;
import java.sql.*;
import java.text.*;
import javax.swing.table.*;
import java.util.*;
public class frmDosen extends javax.swing.JFrame {
//4.b
public frmDosen() {
initComponents();
testDriver();
kosongkan();
tKode.setText("");
updateTabel();
}
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
tKode = new javax.swing.JTextField();
tNama = new javax.swing.JTextField();
tAlamat = new javax.swing.JTextField();
tTglLahir = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
tabel = new javax.swing.JTable();
jPanel2 = new javax.swing.JPanel();
bSimpan = new javax.swing.JButton();
bHapus = new javax.swing.JButton();
bBatal = new javax.swing.JButton();

setTitle("Form Dosen");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});

jPanel1.setLayout(null);

jPanel1.setBackground(new java.awt.Color(0, 204, 204));
jLabel1.setFont(new java.awt.Font("Arial", 1, 12));
jLabel1.setText("Kode");
jPanel1.add(jLabel1);
jLabel1.setBounds(50, 50, 60, 30);

jLabel2.setFont(new java.awt.Font("Arial", 1, 12));
jLabel2.setText("Nama");
jPanel1.add(jLabel2);
jLabel2.setBounds(50, 90, 60, 30);

jLabel3.setFont(new java.awt.Font("Arial", 1, 12));
jLabel3.setText("Alamat");
jPanel1.add(jLabel3);
jLabel3.setBounds(50, 130, 60, 30);

jLabel4.setFont(new java.awt.Font("Arial", 1, 12));
jLabel4.setText("Tgl Lahir");
jPanel1.add(jLabel4);
jLabel4.setBounds(50, 170, 60, 30);

tKode.setBackground(new java.awt.Color(204, 255, 204));
tKode.setFont(new java.awt.Font("Tahoma", 1, 12));
tKode.setText("tKode");
tKode.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
tKode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tKodeActionPerformed(evt);
}
});
tKode.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
tKodeFocusGained(evt);
}
});

jPanel1.add(tKode);
tKode.setBounds(120, 50, 110, 30);

tNama.setBackground(new java.awt.Color(204, 255, 204));
tNama.setFont(new java.awt.Font("Tahoma", 1, 12));
tNama.setText("tNama");
tNama.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
tNama.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNamaActionPerformed(evt);
}
});
tNama.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
tNamaFocusGained(evt);
}
});

jPanel1.add(tNama);
tNama.setBounds(120, 90, 240, 30);

tAlamat.setBackground(new java.awt.Color(204, 255, 204));
tAlamat.setFont(new java.awt.Font("Tahoma", 1, 12));
tAlamat.setText("tAlamat");
tAlamat.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
tAlamat.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tAlamatActionPerformed(evt);
}
});
tAlamat.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
tAlamatFocusGained(evt);
}
});

jPanel1.add(tAlamat);
tAlamat.setBounds(120, 130, 240, 30);

tTglLahir.setBackground(new java.awt.Color(204, 255, 204));
tTglLahir.setFont(new java.awt.Font("Tahoma", 1, 12));
tTglLahir.setText("tTglLahir");
tTglLahir.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
tTglLahir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tTglLahirActionPerformed(evt);
}
});
tTglLahir.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
tTglLahirFocusGained(evt);
}
});

jPanel1.add(tTglLahir);
tTglLahir.setBounds(120, 170, 240, 30);

tabel.setBorder(new javax.swing.border.EtchedBorder());
tabel.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tabel.setGridColor(new java.awt.Color(204, 204, 255));
tabel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabelMouseClicked(evt);
}
});

jScrollPane1.setViewportView(tabel);

jPanel1.add(jScrollPane1);
jScrollPane1.setBounds(4, 214, 460, 110);

getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

jPanel2.setLayout(new java.awt.GridLayout(1, 0));

bSimpan.setBackground(new java.awt.Color(0, 153, 153));
bSimpan.setText("Simpan");
bSimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bSimpanActionPerformed(evt);
}
});
bSimpan.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
bSimpanKeyPressed(evt);
}
});

jPanel2.add(bSimpan);

bHapus.setBackground(new java.awt.Color(0, 153, 153));
bHapus.setText("Hapus");
bHapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bHapusActionPerformed(evt);
}
});

jPanel2.add(bHapus);

bBatal.setBackground(new java.awt.Color(0, 153, 153));
bBatal.setText("Batal");
bBatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bBatalActionPerformed(evt);
}
});

jPanel2.add(bBatal);

getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);

java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-473)/2, (screenSize.height-381)/2, 473, 381);
}
//5.c
private void tabelMouseClicked(java.awt.event.MouseEvent evt) {
tKode.setText(tabel.getValueAt(tabel.getSelectedRow(), 0).toString().trim());
tKodeActionPerformed(null);
}
//4.e
private void bHapusActionPerformed(java.awt.event.ActionEvent evt) {
try{
sql="delete from dosen where kode_dsn='"+tKode.getText().trim()+"' ";
stmt.executeUpdate(sql);
System.out.println(sql);
}catch(SQLException e){JOptionPane.showMessageDialog(this,"Gagal, "+e);}
updateTabel();
kosongkan();
}
//5.a
private void bSimpanKeyPressed(java.awt.event.KeyEvent evt) {
bSimpanActionPerformed(null);
}
//5.d
private void tTglLahirFocusGained(java.awt.event.FocusEvent evt) {
tTglLahir.selectAll();
}
//5.d
private void tAlamatFocusGained(java.awt.event.FocusEvent evt) {
tAlamat.selectAll();
}
//5.d
private void tNamaFocusGained(java.awt.event.FocusEvent evt) {
tKode.selectAll();
}
//5.d
private void tKodeFocusGained(java.awt.event.FocusEvent evt) {
tKode.selectAll();
}
//4.e
private void bBatalActionPerformed(java.awt.event.ActionEvent evt) {
kosongkan();
}
//4.e
private void bSimpanActionPerformed(java.awt.event.ActionEvent evt) {
try{
sql="select count(*) from dosen where kode_dsn='"+tKode.getText().trim()+"'";
hasil=stmt.executeQuery(sql);
hasil.next();
if(Integer.parseInt(hasil.getString(1))<1){
sql="insert into dosen values ('"+tKode.getText()+"','"+tNama.getText()+"','"+tAlamat.getText()+"','"+setTanggal(tTglLahir.getText())+"') ";
stmt.executeUpdate(sql);
System.out.println(sql);
}else{
sql="update dosen set Nama='"+tNama.getText()+"', Alamat='"+tAlamat.getText()+"', Tgl_Lahir='"+tTglLahir.getText()+"' where kode_dsn='"+tKode.getText().trim()+"' ";
stmt.executeUpdate(sql);
System.out.println(sql);
}
}catch(SQLException e){JOptionPane.showMessageDialog(this,"Gagal, "+e);}
kosongkan();
updateTabel();
tKode.requestFocus();
}
//5.e
private void tTglLahirActionPerformed(java.awt.event.ActionEvent evt) {
bSimpan.requestFocus();
}
//5.e
private void tAlamatActionPerformed(java.awt.event.ActionEvent evt) {
tTglLahir.requestFocus();
}
//5.e
private void tNamaActionPerformed(java.awt.event.ActionEvent evt) {
tAlamat.requestFocus();
}
//5.b
private void tKodeActionPerformed(java.awt.event.ActionEvent evt) {
try{
sql="select count(*) from dosen where kode_dsn='"+tKode.getText().trim()+"'";
hasil=stmt.executeQuery(sql);
hasil.next();
if(Integer.parseInt(hasil.getObject(1).toString())>=1){
sql="select Nama,Alamat,tgl_lahir from dosen where kode_dsn='"+tKode.getText().trim()+"'";
hasil=stmt.executeQuery(sql);
hasil.next();
tNama.setText(hasil.getString(1));
tAlamat.setText(hasil.getString(2));
tTglLahir.setText(getTanggal(hasil.getDate(3)));
bHapus.setEnabled(true);
}else{
kosongkan();
}
tNama.requestFocus();
}catch(SQLException e){JOptionPane.showMessageDialog(this,"Gagal, "+e);}
}

/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
new frmDosen().show();
}
//4.d
private void kosongkan(){
tNama.setText("");
tAlamat.setText("");
tTglLahir.setText("");
bHapus.setEnabled(false);
}
//4.d
public void testDriver(){
try{
Class.forName(dbDrv);
con = DriverManager.getConnection(dbUrl,sqlUser,sqlPass);
stmt=con.createStatement();
}catch(Exception ce){
System.out.println(ce.toString());
}
}
//4.d
private void updateTabel(){
tabel.setModel(model=new DefaultTableModel());
//tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
try{
sql="SELECT * FROM dosen";
ResultSet hasil=stmt.executeQuery(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++){
V.add(hasil.getObject(J));
}
model.addRow(V);
}
}catch(Exception e){System.err.println(e.getMessage()+"2");}
}
//4.d
public String getTanggal(java.util.Date d){
return new SimpleDateFormat("dd/MM/yyyy").format(d);
}
//4.d
public String setTanggal(String d){
try{
return new SimpleDateFormat("MM/dd/yyyy").format(new SimpleDateFormat("dd/MM/yyyy").parse(d));
}catch(Exception e){return null;}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton bBatal;
private javax.swing.JButton bHapus;
private javax.swing.JButton bSimpan;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField tAlamat;
private javax.swing.JTextField tKode;
private javax.swing.JTextField tNama;
private javax.swing.JTextField tTglLahir;
private javax.swing.JTable tabel;
// End of variables declaration//GEN-END:variables

//4.c
private String sql,sql2;
private Connection con;
private Statement stmt;
private ResultSet hasil,hasil2;
private String sqlUser="sa"; //UserName untuk administrator SQL server
private String sqlPass="sa"; //Password untuk administrator SQL server
private String sqlDb="dbKuliah"; //Database yang diakses
private String koneksiOdbc="koneksi"; //Nama koneksi odbc
//2 Pilih tergantung jenis koneksi
private String dbDrv = "sun.jdbc.odbc.JdbcOdbcDriver";
//private String dbDrv = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String dbUrl = "jdbc:odbc:"+koneksiOdbc;
//private String dbUrl = "jdbc:microsoft:sqlserver://localhost;DatabaseName="+sqlDb;
private DefaultTableModel model;
}

Comments

  1. mas mau tanya ni

    ini si simpan dalam 1 class kalu beberpa clas?

    da brp class??

    maklum masih nubie ^^

    ReplyDelete
  2. @Anonymous
    kalau ada tulisan public class, berarti itu class tersendiri. Sekarang bisa hitung?

    ReplyDelete
  3. setelah saya lihat beberapa halaman ....wah...bagus banget nih ilmunya...om4gus.., "saya jadi pengen tanya nih mas'"?
    sukses terus om4...!!!!!!!!!

    ReplyDelete
  4. Boleh aja,
    http://om4g.us masih banyak tutorial yang lain

    ReplyDelete

Post a Comment

Popular posts from this blog

Pembuatan PDF di PHP dengan FPDF dan HTML2FPDF

Untuk membuat pdf dengan menggunakan php, kita bisa menggunakan fpdf yang berbasis class. Sedangkan html2fpdf digunakan untuk mengubah html menjadi pdf. Dengan hanya menggunakan fpdf, kita harus menentukan semua hal yang mengatur tampilannya berbasis code sesuai dengan aturan dan fungsi yang disediakan class tersebut. Dengan menggunakan html2fpdf, kita cuma perlu membuat sebuah file html dan tampilannya langsung diubah menjadi sebuah file pdf, tentu dengan beberapa keterbatasan dan perubahan tampilan. Saat ini, fpdf terbaru pada versi 1.6 sedangkan html2fpdf versi 3. Instalasi: + Ekstrak file fpdf dan html2fpdf. Sebenarnya html2fpdf merupakan inheritance dari class fpdf, tapi class di fpdf yang disdertakan di paket html2fpdf telah dimodifikasi dari aslinya sesuai dengan kebutuhan konversi tersebut. Class original dari fpdf akan kita pakai untuk pembuatan pdf secara manual, bukan dari html. + Ganti nama file fpdf.php misalkan menjadi fpdf16.php. Karena untuk bebrapa versi instalasi php

Java-MySql: Aplikasi Database dengan Data Gambar (Updated)

Untuk update metode simpan gambar lihat di appGambar 2.0 Bagaimana caranya menyimpan data yang membutuhkan penyimpanan data gambar? Misalkan data pegawai yang membutuhkan penyimpanan gambar dari setiap pegawai. Alternatifnya ada dua, dengan kelebihan dan kekurangan masing-masing. Cara yang pertama adalah dengan membuat field dengan tipe data binary, kemudian menyimpan gambar yang dibutuhkan dalam field di database tersebut. Cara ini membutuhkan manajemen program yang lebih rumit, tapi data gambar akan terjamin, karena tersimpan didalam database yang terintegrasi dengan data lainnya. Kekurangan lainnya adalah ukuran database yang akan membesar dan lambat. Bayangkan saja, sebuah field membutuhkan gambar dengan format jpeg, 200kB. Apabila ada 200 juta record, maka ukuran field yang diperuntukan khusus untuk gambar dengan perhitungan kasar adalah 0.2 MB x 200M = 40 x 10^12 = 40 TB. Belum ditambah dengan ukuran data dari field lainnya, kalau misalkan untuk menyimpan data penduduk Indonesia.

Java: Pengiriman Parameter antar Frame

Sebenarnya konsep ini berlaku bukan hanya pada frame, tapi bisa dilakukan antar object dari class yang sifatnya umum, karena Java yang sifatnya sudah full OOP. Tapi, karena lebih sering diterapkan dalam pemrograman GUI desktop, khususnya dengan Netbeans, maka dicontohkan dengan class javax.swing.JFrame. Setiap bentuk code java harus dibentuk dalam bentuk class, biar sebagaimanapun sederhananya. Tidak seperti pemrograman lainnya yang menggunakan konsep OOP sebagai tambahan dan pengembangan dari yang sudah ada sebelumnya. Itulah sebabnya kita mengenal class di C++, Pascal, PHP, tapi masih diperbolehkan untuk tetap menggunakan konsep primitif. Sedangkan pada kasus java dan .NET, OOP merupakan inti utamanya yang harus selalu diikuti dan diterapkan. Awalnya akan sangat membingungkan, tapi sangat mudah untuk langkah pengembangan selanjutnya. Sudah lihat JavaDoc? itu adalah dokumen pemrograman yang paling aneh didunia, pada pandangan pertama. Coba bandingkan dengan MSDN-nya .NET, PHP Manual,