Java & Database (Basic)

Studi Kasus Java & DataBase

1. Data nilai semester mahasiswa akan disimpan dalam satu tabel yang data fieldnya terdiri dari:
  • Kode mata kuliah
  • NPM
  • Nama Mahasiswa
  • Nilai Tugas
  • Nilai UTS
  • Nilai UAS
  • Nilai Huruf (hasil perhitungan)
Buatlah perintah SQL UNtuk membuat tabel diatas.
Klik di sini untuk jawaban no. 1


2. Berdasarkan uraian pada soal nomor 1,buatlah gambar rancangan tampilan layar(Output) nilai Ujian semester mahasiswa untuk satu mata kuliah tertentu(misalnya MKK-A102).
Klik di sini untuk jawaban no. 2

3. Dengan asumsi nilai tugas,UTS,UAS(masing-masing dengan rentang nilai 0-100) semua mata kuliah sudah ada di database,buatlah program java yang menggunakan DBMS SQLite untuk menampilkan data seperti rancangan pada soal nomor 2 dengan ketentuan :

  • Nilai Akhir=0,2*nilai tugas+0,3*nilai UTS+0.5*nilai UAS
  • Nilai Huruf ditentukan dengan rumus :
    • A : nilai akhir >79.99
    • B : nilai akhir 68.0 - 79.9
    • C : nilai akhir 56.0 - 67.99
    • D : nilai akhir 45.0 - 55.99
    • E : nilai akhir <45
Klik di sini untuk jawaban no. 3

4. Lengkapi program pada soal nomor 3 agar dapat menampilkan:
  • Nilai A xxx mahasiswa
  • Nilai B xxx mahasiswa
  • Nilai C xxx mahasiswa
  • Nilai D xxx mahasiswa
  • Nilai E xxx mahasiswa
Setelah nilai tiap mahasiswa ditampilkan cukup menuliskan program setelah perintah select.
Klik di sini untuk jawaban no. 4

5.Lengkapi program pada soal nomor 4 agar dapat melakukan update pada field nilai huruf berdasarkan rumus soal nomor 3,setelah mendapat nilai akhir dari proses perhitungan.
Klik di sini untuk jawaban no. 5

Tambahan

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.

Menampilkan Data Dari Database

import java.sql.*;

public class DBPertamaKu {
  public static void main(String[] args) throws Exception {
    Class.forName("org.sqlite.JDBC");
    Connection conn =
      DriverManager.getConnection("jdbc:sqlite:latihan1.db");
    Statement stat = conn.createStatement();
    stat.executeUpdate("drop table if exists mhs;");
    stat.executeUpdate("create table mhs (npm varchar(15), nama varchar(50));");
    PreparedStatement prep = conn.prepareStatement(
      "insert into mhs values (?, ?);");

    prep.setString(1, "200643500107");
    prep.setString(2, "Rockes13");
    prep.addBatch();
    prep.setString(1, "200643500116");
    prep.setString(2, "Firelord");
    prep.addBatch();
    prep.setString(1, "200643500148");
    prep.setString(2, "Achmad");
    prep.addBatch();

    conn.setAutoCommit(false);
    prep.executeBatch();
    conn.setAutoCommit(true);

    ResultSet rs = stat.executeQuery("select * from mhs;");
    System.out.println("   NPM\t\t  Nama");
    while (rs.next()) {
      System.out.print(rs.getString("npm"));
      System.out.println("\t" + rs.getString("nama"));
    }
    rs.close();
    conn.close();
  }
}

Penjelasan :
baris 1: memanggil package sql yang beberapa class-nya akan kita pakai nanti.
baris 3: throws Exception digunakan untuk menangani error yang akan mungkin terjadi pada saat program dijalankan.
baris 5: Class.forName pada dasarnya berfungsi untuk memanggil suatu class dalam suatu package. Dalam kasus ini statement tersebut memanggil class "JDBC" yang berada dalam package "org.sqlite". sumber
baris 6: (Connection) membuat objek koneksi ke database latihan1.db.
baris 8: (Statement) objek yang digunakan untuk mengeksekusi pernyataan SQL.
baris 9: (executeUpdate) mengeksekusi pernyataan SQL yg diberikan, yang mungkin berupa pernyataan INSERT, UPDATE atau DELETE, atau pernyataan SQL yang tidak mengembalikan apa-apa seperti pernyataan DDL.
baris 11: Sebuah pernyataan SQL yang dikompilasi dan disimpan dalam obyek PreparedStatement. Objek ini kemudian dapat digunakan untuk mengeksekusi pernyataan ini berkali-kali secara efisien.
baris 28: ResultSet adalah sebuah tabel virtual yang mewakili data hasil eksekusi pernyataan query SELECT.

Ingin penjelasan lebih detail ?. Silahkan ajukan pertanyaan

SQLite Lanjut 1

Pembahasan kali ini akan mengangkat tema SQL. SQL (Structured Query Language) merupakan sebuah bahasa untuk berkomunikasi dengan sebuah database. Dengan menggunakan SQL kita dapat mengambil data ataupun mengubah data dari suatu database. SQL statement umumnya dikelompokkan menjadi 3 bagian :
1. DDL (Data Definition Language) adalah statement yang digunakan untuk mendefinisikan skema atau struktur dari suatu database. Terdiri dari :

  • CREATE - membuat suatu objek dalam database.
  • ALTER - mengubah struktur objek dari suatu database.
  • DROP - menghapus objek dari suatu database.
  • TRUNCATE - menghapus semua record dari sebuah tabel, termasuk semua alokasi ruang untuk record tersebut ikut dihapus.
  • RENAME - mengganti nama suatu objek database.

2. DML (Data Manipulation Language) adalah statement yang digunakan untuk mengelola data di dalam skema atau struktur objek.

  • SELECT - mendapatkan data dari suatu database.
  • INSERT - memasukkan data ke dalam sebuah tabel.
  • UPDATE - mengubah data yang sudah ada dalam sebuah tabel.
  • DELETE - menghapus record dari sebuah tabel, alokasi ruang tidak dihapus.

3. DCL (Data Control Language).

  • GRANT - memberikan hak akses pengguna ke database.
  • REVOKE - mencabut atau menarik kembali hak akses yang telah diberikan dengan statement GRANT

Selengkapnya mengenai DDL, DML & DCL (klik di sini)

SQL pada SQLite
SQLite telah memahami sebagian besar syntax SQL. Selengkapnya silahkan klik dan baca di sini.
Dalam tutorial kali ini pembahasan materi terbatas pada beberapa syntax SQL saja. Yaitu : CREATE, INSERT, UPDATE, DELETE, dan SELECT.

Yuk...Kita Mulai.
Database yang digunakan adalah database yang telah dibuat pada tutorial yang lalu. Kalau sudah lupa silahkan klik di sini. Setelah berhasil masuk ke dalam database test1.db selanjutnya kita akan mencoba menerapkan beberapa sytax SQL tersebut.
CREATE
Ketikkan perintah berikut ke dalam SQLite console anda :

CREATE TABLE MHS(
   npm char(15) primary key,
   nama char(25),
   jenkel char(10),
   alamat char(10),
   notlp char(15)
);

Penjelasan :

  • Statement CREATE TABLE - statement untuk membuat tabel. Di sini kita akan membuat TABLE dengan nama MHS di mana field-field-nya terdiri dari : npm, nama, jenkel, alamat, notlp. Klik di sini supaya lebih jelas.
  • Primary Key - suatu nilai dalam database yang digunakan untuk mengidentifikasi suatu baris dalam tabel. Selengkapnya klik di sini.
  • Data Type (seperti char dll) - Klik di sini.

INSERT
Ketikkan perintah berikut ke dalam SQLite console anda :

INSERT INTO MHS(
   npm, nama, jenkel, alamat, notlp)
   VALUES(
   '200843500123','Suradi Sanjaya','laki-laki','Jakarta','021-55555555');
INSERT INTO MHS(
   npm, nama, jenkel, alamat, notlp)
   VALUES(
   '200843500124','Rani Desti','perempuan','Jakarta','021-56565656');
INSERT INTO MHS(
   npm, nama, jenkel, alamat, notlp)
   VALUES(
   '200843500125','Ronny Siantar','laki-laki','Jakarta','021-45564565');

Penjelasan :

  • Statement INSERT di atas merupakan syntax SQL untuk memasukkan data ke dalam suatu TABLE. Dalam hal ini kita memasukkan data tentang mahasiswa ke dalam TABLE MHS. Selengkapnya klik di sini.
  • SELECT
    Ketikkan statement berikut ke dalam SQLite console anda :

    SELECT * FROM MHS;
    

    Bila perintah di atas kita eksekusi, akan menghasilkan output seperti ini :

    200843500123 Suradi Sanjaya laki-laki Jakarta 021-55555555
    200843500124 Rani Desti perempuan Jakarta 021-56565656
    200843500125 Ronny Siantar laki-laki Jakarta 021-45564565

    Penjelasan :
    Statement SELECT di atas berguna untuk mengambil atau memanggil satu atau lebih record dalam suatu TABLE. Operator ( * ) bertugas sebagai perwakilan dari semua field. Artinya jika kita menggunakan ( * ) maka yang kita panggil adalah record semua field.

    UPDATE
    Ketikkan perintah berikut ke dalam SQLite console anda :

    UPDATE MHS SET
       nama="Ranny Destia",
       alamat="Bandung"
       WHERE
       npm="200843500124";
    

    Penjelasan :
    Statement UPDATE di atas digunakan untuk mengubah record yang sudah ada dari suatu TABLE. Dalam hal ini kita akan merubah nama & alamat dari mahasiswa yang memiliki npm 200843500124. Perlu diingat bahwa penggunaan klausa WHERE dalam statement UPDATE sangat penting. Karena apabila kita tidak mengikut sertakan klausa WHERE tersebut dijamin semua record (nama & alamat) pada TABLE MHS akan ikut berubah. Selengkapnya silahkan klik di sini.

    Silahkan anda lebih banyak bereksperimen lagi menggunakan keempat statement SQL di atas. Statement SQL di atas merupakan statement yang pada semua DBMS bisa digunakan, seperti : MySQL, MSSQL, SQLServer, Oracle, MS. Access dsb. Sebagai salah satu referensinya, penulis sangat menganjurkan situs ini.

DBMS (DataBase Management System) vs Database

Sumber : PC Media September 2009
Penulis : Bernaridho I. Hutabarat

Sepi dari publikasi
Di sela banyaknya seminar, workshop, tentang ini itu, hampir tidak ada seminar dan workshop tentang database. Mungkin, sebagai wujud lain dari remehnya pandangan akan hal database, ketidakdisiplinan pemakaian istilah pun tidak terdeteksi.Padahal ada sangat banyak ketidak disiplinan pemakaian istilah dalam hal database.
Tulisan ini fokus kepada ketidakdisiplinan dalam hal pemakaian istilah DBMS dan Database. Pada bagian akhir akan dipaparkan efek praktis dari ketidakdisiplinan dan kedisiplinan.

Install DBMS, create Database
Ada banyak wujud ketidakdisiplinan praktisi (bahkan akademisi) TI dalam berbicara tentang database. Salah satunya adalah ketidakdisiplinan dalam membedakan DBMS vs Database. Ini efek dari ketidakdisiplinan para pembuat software dari luar negeri (dan sifat orang Indonesia yang pembeo).
Contoh Kasus :
Pengambil keputusan tentang dialog boxes untuk Oracle telah salah (berkali-kali, mulai dari Oracle 8 sampai Oracle 11) membuat label. Seharusnya judul pada dialog boxes adalah Oracle 10g DBMS, bukan Oracle 10g Database.
Yang kita instal adalah DBMS, bukan Database. Demikian pula halnya dengan produk lain. Kita tidak pernah instal MyQSL database, SQL Server database, Postgre Database, Access Dabatase, dan sebagainya. Yang kita lakukan adalah instal MySQL DBMS, SQL Server DBMS, Postgre DBMS, Access DBMS, dan sebagainya.
Jadi, Database adalah "pihak yang pasif, yang dikelola", sedangkan DBMS adalah "pihak yang aktif, yang mengelola". Database dibuat (created) oleh pemakai, tidak pernah diinstal.

Folder (Direktori)
Dalam pengalaman kerja menjadi konsultan database selama bertahun-tahun, penulis melihat upaya-upaya troubleshooting (penyelesaian masalah) yang menjadi sangat rumit karena komunikasi yang kacau. Sebagai contoh: "Yang masalah ini SQL Servernya atau database-nya?". Lalu mereka cari file di sana dan di sini, di berbagai disk, di berbagai folder.
Berbekal pemahaman perbedaan DBMS dan Database, penulis sangat jarang masalah seperti di atas. Ada dua hal lain yang penulis lakukan untuk mengurangi masalah.
Hal pertama adalah mengkomunikasikannya dengan mitra (klien). Penulis ajak mereka untuk disiplin memakai istilah. Seringkali mereka kembali ke kebiasaan lama, tapi penulis tetap disiplin dalam berkomunikasi dalam arah sebaliknya.
Hal kedua adalah membuat folder-folder untuk memudahkan pemahaman perbedaan. Sejak SQL Server versi 8 (2000) saya disiplin untuk selalu meletakkan database files di luar disk C dan meletakkan DBMS di disk C.

Catatan tentang produk
Penyebab lain ketidakpahaman perbedaan DBMS versus Database adalah karena hampir semua DBMS memaksakan pembuatan database saat instalasi DBMS. Dalam catatan penulis: satu-satunya produk yang tidak memaksakan hal ini adalah Oracle DBMS. Tetapi, Oracle Express Edition memiliki cacat yang sama dengan produk lain: memaksakan pembuatan database.
Dalam praktik, penulis tidak pernah membuat database saat instalasi Oracle DBMS. Pada semua sesi training yang saya bawakan, semua peserta juga diajarkan demikian. Dengan cara ini, peserta dapat membedakan DBMS versus Database, karena tidak ada database yang hadir pasca instalasi. Peserta mudah memahami bahwa yang mereka instal benar DBMS, bukan database.
Pada pembuatan database sebaiknya Anda tidak mengikuti setting default, baik dari Oracle maupun SQL Sever. Setting default database files mengarah ke disk C. Create database dengan file-file berada di disk D.

Penutup
Pemahaman DBMS versus Database, pendisiplinan pemakaian istilah, dan pendisiplinan pemisahan disk/folder sangat membantu pengelolaan database. Kita paham bahwa create database, drop database tidak mengubah DBMS, karena database adalah pihak yang pasif. Kita paham bahwa uninstall DBMS akan membuat database tidak dapat dipakai, karena DBMS adalah pihak yang aktif.
Troubleshooting akan menjadi lebih mudah. Jarang sekali DBMS yang tiba-tiba menjadi bermasalah, lebih sering database. Dengan berbekal hal-hal yang dipaparkan di sini, kita tahu bahwa troubleshooting harus diutamakan pada database folders, bukan DBMS folders.

Pengenalan tentang Database & SQLite

Database (indonesia : basisdata) adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehinggan dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari database tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil query database disebut Manajemen Sistem Basisdata (Database Manajement System, DBMS).sumber

Alasan perlunya database

  • Basis data merupakan salah satu komponen penting dalam system informasi, karena merupakan dasar dalam menyediakan informasi.
  • Basis data menentukan kualitas informasi : akurat, tepat pada waktunya dan relevan. Informasi dapat dikatakan bernilai bila manfaatnya lebih efektif dibandingkan dengan biaya mendapatkannya.
  • Basis data mengurangi duplikasi data (data redudancy).
  • Dengan mengaplikasikan basis data hubungan data dapat ditingkatkan.
  • Basis data dapat mengurangi pemborosan tempat simpanan luar.
  • sumber

    Contoh kasus :
    Dalam suatu Program Studi Teknik Informatika pada suatu Universitas, ingin mengadakan sensus mengenai biodata masing-masing mahasiswanya. Biodata tersebut berisikan : NPM, nama mahasiswa, alamat dan jenis kelamin. Data akan diambil berdasarkan hasil sensus dari tim sensus biodata. Coba anda bayangkan berapa banyak kertas yang dibutuhkan untuk diisikan data-data tersebut melihat begitu banyaknya mahasiswa yang disensus. Dan apabila suatu saat data-data tersebut diperlukan (mencari biodata seorang mahasiswa), akan membuang waktu yang cukup lama untuk mencarinya.
    Jika dibandingkan dengan cara berikut, tim sensus biodata tersebut hanya membawa sebuah Notebook. Dan mengisikan biodata masing-masing mahasiswa ke dalam sebuah database Biodata Mahasiswa yang sebelumnya telah dibuat oleh tim tersebut. Bukankah akan lebih banyak menghemat waktu dan biaya !!!

    SQLite
    SQLite merupakan sebuah database OpenSource seperti halnya MySQL, Firebird, dan lain-lain. Dengan ukuran file yang sangat kecil SQLite layak dipertimbangkan untuk pemilihan sebuah database relasional (RDBMS). Di dalam pustaka SQLite terdapat beberapa fasilitas yang dapat kita gunakan untuk memanipulasi data ataupun mendefinisikan data. Untuk mendapatkan SQLite versi 3 dapat kita peroleh di sini.
    Menggunakan SQLite (pada Windows XP)
    Setelah anda men-download-nya, kemudian anda extract file zip tersebut di mana saja. Dan copy file sqlite3.exe hasil extract tadi ke dalam direktori C:\WINDOWS\system32. Buatlah sebuah direktori baru dengan nama bebas (contoh : basisdata) di dalam drive D: (kalau tidak ada silahkan diganti dengan drive lain seperti C: dll)yang nantinya akan digunakan untuk tempat menyimpan file database yang akan kita buat.
    Kemudian anda buka command prompt melalui Start menu - All Program - Accessories - Command Prompt. Maka akan keluar jendela sebagai berikut :

    Kemudian masuklah ke direktori basisdata pada drive D: yang telah dibuat sebelumnya.

    Membuka & membuat database
    Membuat database dalam SQLite bisa dilakukan dengan cara mengetikkan :

    sqlite3 test.db

    maka akan tampil versi dari SQLite seperti pada gambar berikut :

    Kemudian jika kita akan menutupnya cukup dengan mengetikkan :

    .quit

    Jika anda ingin membuka kembali database file yang telah dibuat sebelumnya. Lakukan langkah-langkah seperti di atas (mengetikkan nama database file yang telah tersimpan, contoh : sqlite3 test.db).