SQLite Lanjut 3

= Kasus = Pada sebuah gudang persediaan barang suatu toko, dibuat sebuah program yang akan menyimpan data mengenai barang, kuantitas barang dll. Program tersebut harus dapat menangani transaksi sebagai berikut :
  • Input data barang.
  • Ubah data barang
  • Hapus data barang
  • Menampilkan data barang


Pertama-tama mari kita perluas kasus di atas menjadi sebuah algoritma. Langkah pertama adalah membuat sebuah class dengan nama JDBC_Lanjut (nama boleh berbeda).
class JDBC_Lanjut
{
}
Selanjutnya kita deklarasikan property Connection, Statement, dan ResultSet. Tidak lupa kita tambahkan import java.sql.*;. penjelasan
import java.sql.*;
class JDBC_Lanjut
{   Connection koneksi;
    Statement stm;
    ResultSet rs;
}
Lalu kita buat method setKoneksiuntuk membuat koneksi ke database.
    public void setKoneksi(String dbDriver, String strDB)
    {   try
        {   Class.forName(dbDriver);
            this.koneksi = DriverManager.getConnection(strDB);
            this.stm = koneksi.createStatement();
        } catch(Exception e)
        {   System.out.println("error : "+e.getMessage());
        }
    }
Lalu kita buat method execSQL untuk menangani eksekusi SQL seperti : membuat table, input data barang, ubah data barang, dan hapus data barang.
    public void execSQL(String strSQL)
    {   try
        {   stm.executeUpdate(strSQL);
        } catch(Exception e)
        {   System.out.println("error : "+e.getMessage());
        }
    }
Tahap terakhir adalah membuat method getData untuk menangani eksekusi SQL SELECT yang bertujuan untuk menampilkan data dari database ke layar output.
    public void getData(String strSQL)
    {   try
        {   this.rs = stm.executeQuery(strSQL);
            System.out.println("kode\t  nama\t\tstok\tunit");
            System.out.println("------------------------------------------");
            while(rs.next())
                System.out.println(rs.getString("kode")+"\t"+rs.getString("nama")+
                "\t"+rs.getInt("stok")+"\t"+rs.getString("unit"));
        } catch(Exception e)
        {   System.out.println("error : "+e.getMessage());
        } finally
        {   try
            {   rs.close();
            } catch(Exception e)
            {   System.out.println("error : "+e.getMessage());
            }
        }
    }
Lalu bagaimana kita bisa menguji program yang telah kita buat tadi ? Maka kita tambahkan method main() yang berisi contoh statement untuk menjalankan program tersebut.
    public static void main(String[] args)
    {   JDBC_Lanjut x = new JDBC_Lanjut();
        String nama_driver="org.sqlite.JDBC",
                    path_db="JDBC:sqlite:latJDBC.db",
                    ambil_data="select * from barang";
         x.setKoneksi(nama_driver, path_db);
         x.execSQL("drop table if exists barang;");
         x.execSQL("create table barang(kode char(9), nama char(20), stok integer,"+
                              "unit char(9), primary key(kode));");
         x.execSQL("Insert into barang(kode, nama, stok, unit)"+
                             "values('B001','Buku Tulis',100,'buah');");
         x.execSQL("insert into barang values('B002','Pulpen Hitam',78,'buah');");
         x.execSQL("insert into barang(kode,nama) values('B003','Spidol Pink');");
         x.execSQL("insert into barang(kode, nama, unit) "+
                            "values('B004','Penghapus','buah');");
         System.out.println("Data awal");
         x.getData(ambil_data);
         x.execSQL("update barang set stok=33 where kode='B004';");
         System.out.println("\n\nData setelah diubah (update)");
         x.getData(ambil_data);
         x.execSQL("update barang set unit='buah', stok=147 where kode='B003';");
         System.out.println("\n\nData setelah diubah (update)");
         x.getData(ambil_data);
         x.execSQL("delete from barang where kode='B004';");
         System.out.println("\n\nData setelah diubah (update)");
         x.getData(ambil_data);
    }
Silahkan anda jalankan program di atas. Modifikasilah jika anda inginkan. Untuk penjelasan lebih lanjut silahkan mengajukan pertanyaan.
Klik di sini untuk lihat source code lengkapnya.