com
Pada tutorial kali ini, saya akan menjelaskan bagaimana membuat aplikasi database menggunakan
Java sebagai bahasa pemrogramannya, dan MySQL sebagai aplikasi databasenya. Kedua program ini
mampu bekerjasama dan menghasilkan suatu program baru yang dapat berinteraksi dengan baik.
Saya di sini hanya akan menjelaskan sebuah dasar dalam pembuatan aplikasi database, yaitu adanya
proses insert, update, dan delete data. Tabel yang digunakan juga hanya 1 tabel, itu pun hanya berisi
3 field data. Ya, aplikasi database yang cukup sederhana. Namun dengan adanya tutorial ini saya
berharap dapat digunakan sebagai acuan dalam membuat sebuah aplikasi yang cukup kompleks.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
PART I
1. Langkah pertama adalah pembuatan database yang akan digunakan dalam menyimpan data. Di
sini saya menggunakan Wamp Server untuk aplikasi databasenya karena saya menggunakan
WIndows. Langsung saja masuk ke MySQL console :
2. Kemudian setelah masuk ke MySQLnya, mulai membuat databasenya . Untuk lebih mudahnya
perhatikan gambar berikut :
Kita membuat database yang bernama mahasiswa. Kemudian kita membuat table
data_mahasiswa yang berisi field-field nim, nama, dan alamat. Not null berarti tidak boleh
kosong, sedangkan primary key adalah kunci utama dalam sebuah table yang unik.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
3. Pembuatan database telah selesai, kemudian buat projectnya di NetBeans 6.8. Caranya klik File >
New Project. Lalu akan dibawa ke tampilan seperti ini :
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
Untuk nama projectnya yaitu AplikasiDatabase, kemudian untuk Project Location bisa
disesuaikan sendiri direktorinya. Kemudian Finish.
5. Setelah selesai, Anda akan menjumpai struktur project yang telah dibuat tadi.
6. Pembuatan project dimulai dengan membuat user interfacenya. Bikin saja package baru dengan
nama aplikasidatabase.frame. Caranya klik kanan pada package aplikasidatabase, pilih New dan
kemudian pilih package. Kemudian Finish.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
7. Sekarang klik kanan lagi pada package aplikasidatabase.frame, pilih New>JFrame Form.
Kemudian akan tampil seperti berikut. Berikan nama yaitu Frame. Klik Finish.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
8. Setelah itu akan tampil seperti berikut. Itu merupakan tampilan awal dari pembuatan JFrame.
Sekarang bisa ditambahkan komponen-komponen yang diperlukan. Tinggal drag and drop saja
dari palette di sebelah kanan.
9. Kemudian masukkan beberapa komponen. Supaya mudah, saya membuat 2 panel di JFrame
tersebut, kemudian setLayout JFramenya menjadi border layout.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
Sekarang bisa dilihat tampilan panel yang telah dibuat. Panel atas untuk komponen inputnya,
dan komponen bawah untuk JTablenya.
10. Sekarang buatlah tampilan JFrame menjadi seperti gambar di bawah. Untuk panel bawah
setLayoutnya juga border layout agar Jtable menyesuaikan.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
Agar lebih mudah dalam membuatnya nanti, ganti dulu nama variable pada masing masing
komponen. Caranya klik kanan pada komponen tersebut, kemudian pilih Change Variable Name.
Berikut nama-nama komponen yang telah dibuat :
Untuk bagian pertama cukup seperti ini dulu. Pada bagian kedua kita akan membuat TableModel
untuk tabelMahasiswa.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
PART II
1. Buat lagi package baru dengan nama aplikasidatabase.tabel. Dalam package ini akan ada 2 kelas,
yaitu kelas untuk membuat entitas dan kelas untuk TabelModelnya. Untuk penjelasannya bisa
dilihat pada pembuatan kelasnya nanti.
2. Kemudian masuk ke kelas Mahasiswa. Kelas Mahasiswa adalah kelas yang hanya akan
menampung nilai-nilai yang akan dimasukkan kedalam table. Jadi hanya berisi method setter()
dan getter() saja. Tambahkan beberapa variable pada kelas Mahasiswa.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
Kemudian agar lebih mudah, klik kanan saja pada source editornya, pilih Insert Code.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
package aplikasidatabase.tabel;
/**
*
* @author dimas
*/
public class Mahasiswa {
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
Kemudian akan terlihat warning di sebelah kiri, klik saja dan pilih Implements all abstract
method.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
Itu berarti kita membuat variable list dari interface List. Kemudian dari List tersebut diinclude-
kan kelas Mahasiswa yang telah dibuat tadi sebagai penampung nilai dari variable list. Kemudian
dia juga memanggil constructor dari kelas ArrayList<E>. Kelas ini mampu memanipulasi ukuran
dari array yang digunakan untuk menampung nilai-nilai array dari variable list tadi.
5. Sekarang tambahkan kode pada method getRowCount(). Method ini digunakan untuk
menghitung jumlah baris pada suatu tabel.
return list.size();
Method ini mengembalikan nilai dari element list. Jadi akan dapat menyesuaikan jumlah dari
baris yang ada.
6. Tambahkan kode pada method getColumnCount(). Method ini digunakan untuk menghitung
jumah kolom yang ada pada table. Karena kita tadi telah membuat 3 variabel, yaitu nim, nama,
dan alamat, maka jumlah kolomnya juga 3. Tambahkan seperti ini.
return 3;
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
7. Tambahkan juga pada getValueAt(int rowIndex, int columnIndex). Method ini digunakan untuk
mengambil nilai yang ada pada sebuah table. Pertama dia menentukan baris keberapa dan
kolom ke berapa yang akan diambil. Untuk kolom pertama, dia akan mengembalikan nilai dari
baris yang sesuai, dan mengambil nilai dari method getter yaitu getNim(). Begitu juga dengan
kolom-kolom berikutnya.
@Override
public String getColumnName(int column) {
switch(column){
case 0 : return "NIM";
case 1 : return "NAMA";
case 2 : return "ALAMAT";
default: return null;
}
9. Tambahkan method untuk menambah baris pada table. Method ini membawa parameter dari
kelas mahasiswa, dan menyimpannya di variable mahasiswa. Kemudian dia dimasukkan ke
variable list. Yang terakhir adalah menambah baris pada table.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
10. Tambahkan method untuk menghapus baris. Dia membawa nilai berupa integer, yaitu nilai dari
baris pertama dan baris terakhir pada table. Maka keseluruhan baris akan terhapus.
Untuk kelas TabelModelMahasiswa sudah selesai, berikut kode program secara keseluruhan :
package aplikasidatabase.tabel;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
* @author dimas
*/
list.add(mahasiswa);
fireTableRowsInserted(getRowCount(), getColumnCount());
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
list.remove(i);
fireTableRowsDeleted(i, row);
return list.size();
return 3;
switch(columnIndex){
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
@Override
switch(column){
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
PART III
Pada bagian ke-3 ini kita akan menyelesaikan keseluruhan program Aplikasi Database.
1. Sekarang masuk pada kelas Frame tadi, dan masuk pada bagian source-nya.Tambahkan method
initForm() di bawah method initComponents(). Setelah itu pasti ada warning lagi. Klik saja dan
pilih create method initForm() in aplikasidatabase.frame.Frame.
tabelMahasiswa.setModel(modelMahasiswa);
setLocationRelativeTo(this);
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
4. Langkah berikutnya adalah melakukan koneksi ke MySQL. Pertama harus diincludekan library
dari MySQL ke dalam project. Caranya klik kanan pada Libraries, kemudian pilih Add Library.
Dengan begitu kita sudah membawa kelas yang berisi Driver untuk koneksi ke MySQL.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
try {
Class.forName("com.mysql.jdbc.Driver");
Connection =
DriverManager.getConnection("jdbc:mysql://localhost/
statement = connection.createStatement();
Class.forName("com.mysql.jdbc.Driver");
Digunakan untuk menentukan lokasi driver JDBC tersebut. Karena menggunakan MySQL
sebagai databasenya, seperti itulah nama kelasnya.
Connection = DriverManager.getConnection
("jdbc:mysql://localhost/mahasiswa", "root", "");
Melakukan koneksi ke MySQLnya dengan url seperti di atas. Localhost merupakan database
hostnya, mahasiswa merupakan nama database yang telah dibuat tadi, sedangkan root
adalah nama pengguna dari MySQL. String kosong di situ adalah password untuk masuk
sebagai user root, tapi karena tidak diberi password, maka kosongkan saja/ sesuaikan.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
statement = connection.createStatement();
Statement adalah variable dari kelas Statement yang digunakan untuk mengeksekusi query-
query sql di dalam Java.
9. Langkah berikutnya adalah memberi aksi pada ke tiga JButton tersebut. Caranya klik kanan pada
bInsert, kemudian piilih Events>Action>actionPerformed
Kemudian berikan method insert(), update, dan delete() pada masing-masing JButton yang
sesuai.
10. Sekarang kita mulai dengan membuat method INSERT. Ketikkan kode seperti ini di bawah
method openDB();
try {
statement.executeUpdate(sql);
refresh();
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
clearForm();
Penjelasan :
Untuk menginputkan data ke MySQL. Query yang digunakan adalah insert into yang mana nilai
dari variabelnya diambilkan dari masing-masing JTextField. Karena ketika membuat tadi struktur
tabelnya adalah nim, nama, baru alamat, maka di sini yang diinputkan juga harus sesuai.
statement.executeUpdate(sql);
Merupakan kode untuk mengeksekusi perintah sql di mana sql tadi telah berisi query insert
dalam MySQL.
refresh();
clearForm();
Kemudian JOptionPane merupakan kelas untuk menampilkan beberapa informasi yang layak
untuk ditampilkan. Di situ jika tidak ada kesalahan, maka akan menampilkan “Data berhasil
disimpan”, namun jika salah akan menampilkan pesan errornya.
try {
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
result = statement.executeUpdate(sql);
refresh();
clearForm();
Penjelasan :
Digunakan untuk menampilkan konfirmasi dialog untuk meyakinkan apakah data tersebut akan
diubah.
Query dari MySQL untuk mengupdate data. Di sini yang menjadi patokan adalah nim, maka nim
tidak diubah.
result = statement.executeUpdate(sql);
Untuk mengeksekusi query dari String sql tadi yang berisi query update. Agar mengetahui
apakah data berhasil diubah atau tidak, bisa digunakan JoptionPane lagi, dan ketika error
tampilkan juga pesan errornya untuk mengetahui letak kesalahannya.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
try {
if ((app = JOptionPane.showConfirmDialog(null,
"Hapus data " + tNim.getText() + " ?", "Perhatian",
JOptionPane.YES_NO_OPTION)) == 0) {
result = statement.executeUpdate(sql);
refresh();
clearForm();
Penjelasan :
Hampir sama seperti kode-kode sebelumnya, di sini hanya akan saya jelaskan query delete.
Kode di atas merupakan sintak untuk menghapus data pada suatu tabel. Sekali lagi yang menjadi
patokan haruslah data yang unik/ tidak ada duanya. Karena jika ada data yang sama yang
menjadi acuan untuk menghapus/ mengubah, maka database tersebut akan kacau.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
13. Langkah berikutnya adalah memberikan aksi pada JTable. Hal ini digunakan untuk keperluan 3
anomali data di atas. Jadi ketika sebuah data akan dihapus/ diubah, sudah pasti hal yang akan
dilakukan adalah memilih datanya. Karena penyimpanan datanya menggunakan JTable, maka
akan lebih baik jika memilih data langsung pada JTable. Tambahkan aksi pada JTable, yaitu
mouseClicked. Perhatikan gambar di bawah :
tabelMahasiswa.getSelectionModel().addListSelectionListen
er(new ListSelectionListener() {
Penjelasan :
tNim.setEditable(false);
Seperti yang telah saya ungkapkan di atas, kita memerlukan acuan untuk melakukan anomali
terhadap data. Yang digunakan sebagai acuan di sini adalah NIM, maka ketika akan diubah/
dihapus, NIM tersebut tidak boleh diubah karena digunakan sebagai acuan.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
tabelMahasiswa.getSelectionModel().addListSelectionListener
(new ListSelectionListener() {
14. Buat method clearForm() seperti kode di bawah ini. Method ini digunakan untuk membersihkan
JTextField. Sebenarnya bisa dibuat tanpa method, namun karena ada beberapa method yang
melakukan hal tersebut, maka buat saja method ini. Jadi tinggal dipanggil kembali tanpa
menuliskan beberapa kode yang sama.
private void clearForm() {
tNim.setText("");
tNama.setText("");
tAlamat.setText("");
tNim.requestFocus();
}
15. Buat method refresh() seperti di bawah ini. Method ini sebenarnya hanya berfungsi untuk
menghapus tabel dan menampilkan data. Lalu di mana fungsi ini diletakkan? Seperti yang bisa
dilihat method ini diletakkan ketika user melakukan anomali data dan ketika pertama kali
program berjalan. Jadi supaya data yang ada pada tabelMahasiswa selalu sama dengan data
yang ada pada MySQL, maka data yang sudah ada dihapus semua, kemudian ditampilkan
kembali dengan memilih semua data yang ada pad MySQL.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
JOptionPane.showMessageDialog(null, ex,
"Error", JOptionPane.ERROR_MESSAGE);
}
}
Penjelasan :
Variabel row berfungsi untuk menghitung semua jumlah baris yang ada pada
tabelMahasiwa. Yang disimpan hanyalah nilai terakhirnya saja. Kemudian dengan
perulangan, dia menghapus baris-baris yang ada pada JTable mulai dari baris 0 sampai baris
terakhir (nilai dari row)
Melakukan query MySQL untuk menampilkan keseluruhan data yang ada pada tabel
data_mahasiswa. Kemudian dieksekusi dan disimpan nilai yang ada pada tabel
data_mahasiswa ke variabel rs
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
while (rs.next()) {
Mahasiswa mahasiswa = new Mahasiswa();
mahasiswa.setNim(rs.getString(1));
mahasiswa.setNama(rs.getString(2));
mahasiswa.setAlamat(rs.getString(3));
modelMahasiswa.add(mahasiswa);
}
tNim.setEditable(true);
Dengan perulangan dia akan menampilkan keseluruhan data yang ada. Parameter pada
while memiliki arti, selama masih ada data selanjutnya maka dia akan melakukan sintak yang
ada pada blok perulangan while. Nah pada blok while, dia akan memberikan nilai pada
JTable dengan membawa nilai dari tabel data_mahasiswa. Perintah getString() digunakan
untuk mengambil data pada kolom ke-n pada sebuah tabel pada MySQL. Bisa menggunakan
nilai int, atau nilai String. Untuk nilai String bisa langsung dipanggil nama field dalam tabel
MySQL, misalnya rs.getSting(“nim”), itu berati dia mengambil nilai dari field nim.
16. Sekarang tambahkan method openDB dan refresh pada method initForm, menjadi seperti ini :
private void initForm() {
modelMahasiswa = new TabelModelMahasiswa();
tabelMahasiswa.setModel(modelMahasiswa);
setLocationRelativeTo(this);
openDB();
refresh();
}
Sampai sini sebenarnya program sudah selesai. Tapi lebih baik jika kita menggunakan method
main untuk memanggil Frame yang telah kita buat tadi.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
17. Tambahkan kode pada kelas Main yang berfungsi sebagai method main.
Method UIManager berfungsi untuk merubah tampilan pada Frame, karena saya rasa
tampilan defaultnya java kurang menarik. Kemudian setelah itu dia memanggil kelas Frame
tadi dan menampilkannya dengan setVisible(true). Sekarang untuk menjalankannya tekan
saja F6 atau tanda seperti gambar.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
Sekarang coba jalankan programnya. sebelumnya pastikan tidak ada yang error. Jika ada
perhatikan kembali pada kode-kode yang error. Setelah dijalankan maka hasilnya seperti ini :
Seperti itulah hasil akhir dari project AplikasiDatabase. Semoga tidak ada hal yang terlewatkan
dalam tutorial ini dan semoga berguna. Jika ada kesalahan dalam penjelasan, saya
membutuhkan kritik dan saran untuk memperbaiki kemampuan saya lagi.
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
package aplikasidatabase.frame;
import aplikasidatabase.tabel.Mahasiswa;
import aplikasidatabase.tabel.TabelModelMahasiswa;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
* @author dimas
*/
public Frame() {
initComponents();
initForm();
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
*/
@SuppressWarnings("unchecked")
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Aplikasi Database");
jPanel1.setLayout(new java.awt.BorderLayout());
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
tabelMahasiswa.setModel(new javax.swing.table.DefaultTableModel(
},
new String [] {
));
tabelMahasiswa.addMouseListener(new java.awt.event.MouseAdapter() {
tabelMahasiswaMouseClicked(evt);
});
jScrollPane1.setViewportView(tabelMahasiswa);
jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jLabel1.setText("NIM");
jLabel2.setText("NAMA");
jLabel3.setText("ALAMAT");
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
bInsert.setText("INSERT");
bInsert.addActionListener(new java.awt.event.ActionListener() {
bInsertActionPerformed(evt);
});
bUpdate.setText("UPDATE");
bUpdate.addActionListener(new java.awt.event.ActionListener() {
bUpdateActionPerformed(evt);
});
bDelete.setText("DELETE");
bDelete.addActionListener(new java.awt.event.ActionListener() {
bDeleteActionPerformed(evt);
});
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel1)
.addComponent(jLabel3))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(bInsert)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(bUpdate)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(bDelete))
.addComponent(tAlamat, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE)
.addComponent(tNim, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
.addComponent(tNim, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(tNama, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(tAlamat, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(bInsert)
.addComponent(bUpdate)
.addComponent(bDelete))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
getContentPane().add(jPanel2, java.awt.BorderLayout.PAGE_START);
pack();
}// </editor-fold>
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
insert();
update();
aksiTabel();
delete();
/**
*/
java.awt.EventQueue.invokeLater(new Runnable() {
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
new Frame().setVisible(true);
});
tabelMahasiswa.setModel(modelMahasiswa);
setLocationRelativeTo(this);
openDB();
refresh();
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
try {
Class.forName("com.mysql.jdbc.Driver");
statement = connection.createStatement();
try {
String sql = "insert into data_mahasiswa values " + "('" + tNim.getText() + "','" +
tNama.getText() + "','" + tAlamat.getText() + "')";
statement.executeUpdate(sql);
refresh();
clearForm();
try {
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
String sql = "update data_mahasiswa set nama = '" + tNama.getText() + "', alamat = '" +
tAlamat.getText() + "' where nim = '" + tNim.getText() + "'";
result = statement.executeUpdate(sql);
refresh();
clearForm();
try {
String sql = "delete from data_mahasiswa where nim = '" + tNim.getText() + "'";
result = statement.executeUpdate(sql);
refresh();
clearForm();
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
tNim.setEditable(false);
tabelMahasiswa.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
if (baris != -1) {
tNim.setText(anggota.getNim());
tNama.setText(anggota.getNama());
tAlamat.setText(anggota.getAlamat());
});
tNim.setText("");
tNama.setText("");
tAlamat.setText("");
tNim.requestFocus();
http://tanahdjawa.wordpress.com
dimas.agil.67@gmail.com
try {
modelMahasiswa.delete(0, row);
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
mahasiswa.setNim(rs.getString(1));
mahasiswa.setNama(rs.getString(2));
mahasiswa.setAlamat(rs.getString(3));
modelMahasiswa.add(mahasiswa);
tNim.setEditable(true);
http://tanahdjawa.wordpress.com