[ ARSITEKTUR APLIKASI DATABASE DAN JDBC API ]

Pertemuan XV [ ARSITEKTUR APLIKASI DATABASE DAN JDBC API ]

Arsitektur Aplikasi Database

Aplikasi – aplikasi database terdiri dari beberapa fungsi, seperti :  Database Management System (DBMS).

 Application Logic (business rules).  Presentation Logic (Interface).

Pada arsitektur client server fungsi – fungsi tersebut dapat diletakkan antara client dan server dalam beberapa cara. Berikut ini merupakan 2 arsitektur client – server yang mungkin untuk sesuatu aplikasi database :

Arsitektur Two-Tier.

Pada Arsitektur two-tier seperti terlihat pada gambar di bawah ini, Application Logic data database driver terletak di sisi client sedangkan DBMS terletak di sisi server. Aplikasi seperti ini dapat diimplementasikan dengan menggunakan Applet, dimana business rules terdapat dalam kode applet sama seperti database driver (yang berisi kode untuk berinteraksi dengan DBMS pada sisi server).

Tier 1

Tier 2

Driver dan Application Logic

Database Server

Gambar : Arsitektur Two-Tier

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Arsitektur di atas dikenal dengan fat-client architecture, dimana kode dan pemrosesan banyak dilakukan disisi client. Database driver dapat diinstalasi terlebih dahulu atau di download melalui applet.

Arsitektur Three-Tier.

Pada arsitektur three-tier seperti terlihat pada gambar di bawah ini hanya presentation logic atau interface yang terletak disisi client. Aplication logic atau business rules terletak disisi server sedangkan DBMS dapat diletakkan disisi server atau di komputer ketiga.

Driver dan Application

Driver dan Application

Logic

Logic

Database Server

Gambar : Arsitektur Three-Tier

Arsitektur di atas sering dikenal sebagai thin client, dimana kode dan pemrosesan disisi client lebih sedikit dibandingkan disisi server. Contoh penggunaan arsitektur thin-client HTML, sedangkan business logic pada servlet yang menghubungkan ke database system pada server.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

SQL

SQL (dibaca ‖ess-que-el‖) merupakan singkatan dari Structure Query Language. SQL digunakan untuk berkomunikasi dengan suatu database. Berdasarkan ANSI ( American National Standards Institute), SQL merupakan bahasa standar untuk relational database management system. Pernyataan – pernyataan SQL digunakan untuk melakukan fungsi – fungsi seperti update data pada database, atau pengambilan data dari database. Beberapa Relational DBMS yang menggunakan SQL, antara lain : Oracle, Sybase, Microsoft SQL Server, Access, Ingre, MySQL, Postgre dan masih banyak lagi. Meskipun hampir semua DBMS menggunakan SQL, banyak DBMS yang memiliki tambahan kemampuan dalam SQL-nya dan biasanya digunakan khusus untuk DBMS tersebut.

SQL memiliki beberapa versi antara lain : SQL 1 atau dikenal dengan SQL-86, SQL 2 atau sering dikenal dengan SQL-92, dan SQL 3 atau yang dikenal dengan SQL-99.

Kategori Pernyataan SQL

Pernyataan – pernyataan SQL dapat dibagi mejadi 2 kategori, yaitu pernyataan – pernyataan Data Manipulation Language (DML) dan Data Definition Language (DDL). Pernyataan – pernyataan DML berkaitan dengan data, baik pengambilan atau pemodifikasian data supaya tetap up-to-date. Sedangkan pernyataan – pernyataan DDL berkaitan dengan pembuatan atau pengubahan tabel dan objek – objek database lainnya seperti view dan index.

Berikut ini merupakan pernyataan – pernyataan DML, antara lain :  Select. Digunakan untuk query dan menampilkan data dari sebuah database. Pernyataan SELECT menspesifikasikan kolom

mana yang termasuk dalam result set (hasi query). Pernyataan SELECT ini merupakan pernyataan yang paling sering digunakan dalam aplikasi –aplikasi database.  Insert.

Digunakan untuk mengisi tabel yang baru dibuat atau menambahkan baris/record baru pada tabel yang sudah dibuat.  Update. Digunakan untuk mengubah nilai dari suatu kolom atau sekumpulan baris dari sebuah tabel.  Delete. Digunakan untuk menghapus sebuah baris tertentu atau sekumpulan baris dari sebuah tabel.

Berikut ini merupakan pernyataan – pernyataan DDL, antara lain :

BAHASA PEMROGRAMAN 1

JILID PERTAMA

 CREATE TABLE. Digunakan untuk membuat tabel dengan nama kolom yang ditentukan oleh pengguna. Pengguna juga perlu mendefinisikan tipe data untuk setiap kolom. Tipe – tipe data tersebuat sangat bervariasi, setiap DBMS memiliki tipe

data yang berbeda dengan DBMS lainnya. Dengan demikian pengguna perlu mengetahui terlebih dahulu tipe data yang didukung oleh DBMS tersebut.

 DROP TABLE. Digunakan untuk menghapus semua baris / record dan menghapus definisi tabel dari database.

 ALTER TABLE. Digunakan untuk menambah atau menghapus sebuah kolom dari suatu tabel.

Pernyataan – Pernyataan SQL.

Sebuah sistem database relational terdiri dari satu atau lebih objek yang disebut tabel. Data atau informasi disimpan pada tabel – tabel tersebut. Tabel secara unik diidentifikasikan dengan nama tabel beserta kolom dan barisnya. Kolom terdiri dari nama kolom, tipe data dan attribut – attribut lainnya. Baris terdiri dari record – record atau data dari kolom – kolom. Berikut ini contoh tabel yang diberi nama ‘Pegawai‘, terdiri dari kolom no_id, nm_depan, nm_belakang,umur,kota,propinsi. Baris berisi data untuk tabel tersebut, seperti terlihat pada tabel di bawah ini :

Tabel : Tabel Pegawai

no_id nm_depan

nm_belakang

Mary Ann

Mary Ann

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Pada bagian selanjutnya akan dibahas pernyataan – pernyataan SQL secara ringkas sebagai dasar atau mengingatkan kembali mengenai bagaimana menuliskan pernyataan – pernyataan SQL. Untuk pernyataan SQL secara mendetail, anda dapat membaca buku – buku atau referensi – referensi mengenai SQL.

Membuat Tabel.

Pernyataan CREATE TABLE digunakan untuk membuat sebuah tabel baru. Berikut ini merupakan bentuk pernyataan sederhana CREATE TABLE : CREATE TABLE <namatabel>

(,kolom1> <tipedata>, <kolom2> <tipedata>,

<kolomN> <tipedata> [<batasan>]);

Bentuk pernyataan CREATE TABLE jika kita menggunakan batasan (constraints) : CREATE TABLE <namatabel>

(,kolom1> <tipedata>, <kolom2> <tipedata> [<batasan>],

……………………………………………………………………………………………………. <kolomN> <tipedata> [<batasan>]);

[ ] = optional

Contoh :

CREATE TABLE pegawai

(,no_id INT (5), nm_depan VarChar (15), nm_belakang VarChar (20),umur INT (3),kota VarChar (30),propinsi VarChar (20));

<kolomN> <tipedata> [<batasan>]);

Untuk membuat sebuah tabel baru, ketikkan CREATE TABLE diikuti dengan nama tabel, tanda ‘( ‘, diikuti nama kolompertama, tipe data dan batasannya jika ada, lanjutkan untuk kolom berikutnya, tanda ‘) ‘ dan ditutup dengan

tanda ‘; ‘ biasanya banyak digunakan untuk menutup pernyataan SQL dibanyak DBMS. Pada materi kuliah ini, penulis menggunakan tanda ‗: ‗ disetiap akhir pernyataan SQL. Untuk lebih jelasnya lihat dokumentasi DBMS anda.

Nama tabel dan kolom harus diikuti dengan huruf, angka, atau underscore ‘_ ‘ dengan panjang tidak lebih dari 64 karakter (untuk MySQL). Tidak boleh menggunakan reserved keywords sebagai nama tabel atau kolom

(seperti, ‖select‖,‖create‖,‖insert‖, dan sebagainya).

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Tipe – tipe data menentukan tipe data apa yang digunakan untuk kolom tertentu. Jika nama kolomnya ‖nm_belakang‖, digunakan untuk menyimpan nama – nama, maka kolom tersebut seharusnya memiliki tipe data

‖VarChar‖ (variable-length character). Tabel berikut merupakan tipe – tipe data yang sering digunakan :

Tipe – tipe Data SQL yang sering digunakan

Tipe Data

Deskripsi

Char (ukuran)

String karakter dengan panjang tetap.

VarChar (ukuran) String karakter dengan panjang bervariasi tapi panjang maksimal sesuai yang ditetapkan. Numeric (ukuran)

Angka dengn maksimal digit sesuai yang ditetapkan.

Integer

Angka berupa integer.

Waktu / jam.

Ketika tabel dibuat, biasanya satu atau lebih kolom memiliki batasan – batasan tertentu. Suatu batasan biasanya berupa aturan yang terkait dengan kolom tersebut, data yang dimasukkan ke dalam kolom harus sesuai

dengan aturan tersebut. Sebagai contoh, batasan ‖unique‖ menentukan bahwa tidak boleh ada dua record yang memiliki nilai sama. Ada dua batasan lagi yang sering digunakan seperti ‖not null‖ menentukan bahwa kolom tidak dapat bernilai kosong at au null dan ‖primary key‖ menentukan identifikasi unik untuk setiap record / baris dalam sebuah tabel. Sebagai contoh, pernyataan di bawah ini akan membuat tabel pegawai seperti pada tabel di bawah ini :

CREATE TABLE pegawai

(no_id number (5) UNIQUE NOT NULL, nm_depan VarChar (15),

nm_belakang VarChar(20), umur integer (3), kota VarChar (30),

propinsi VarChar (20), PRIMARY KEY (no_id));

Menghapus Tabel.

Pernyataan DROP TABLE digunakan untuk menghapus sebuah tabel dan seluruh record pada tabel tersebut. Untuk menghapus tabel secara menyeluruh termasuk semua record-nya, tulis DROP TABLE diikuti dengan nama tabel. Berikut ini merupakan bentuk pernyataan DROP TABLE.

DROP TABLE <namatabel>;

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Pernyataan DROP TABLE digunakan untuk menghapus sebuah tabel dan seluruh record pada tabel tersebut. Untuk menghapus tabel secara menyeluruh termasuk semua record-nya, tulis DROP TABLE diikuti dengan nama tabel. Berikut ini merupakan bentuk pernyataan DROP TABLE.

DROP TABLE pegawai;

Modifikasi Struktur Tabel.

Untuk memodifikasi struktur dari suatu tabel, kita dapat menggunakan pernyataan ALTER TABLE. Pernyataan ALTER TABLE dapat digunakan untuk menambah dan menghapus kolom maupun batasan – batasannya ( constraints). Berikut ini merupakan bentuk pernyataan ALTER TABLE.

ALTER TABLE <namatabel>

ADD (,kolom> <tipedata> [, ……] | DROP <kolom> [, ……..];

Sebagai contoh, untuk menambah kolom kode_pos pada tabel pegawai, kita dapat menuliskan pernyataan berikut : ALTER TABLE pegawai ADD kode_pos Char (5);

Untuk menghapus kolom propinsi pada tabel pegawai, kita dapat menuliskan pernyataan sebagai berikut : ALTER TABLE pegawai DROP propinsi;

Menambah Data.

Pernyataan INSERT digunakan untuk menambah atau menyisipkan data atau record pada suatu tabel. Untuk menambahkan record ke dalam suatu tabel, tuliskan INSERT INTO diikuti dengan nama tabel, tanda ‘( ‘, nama kolom –

kolom dipisahkan dengan tanda koma, tanda ‘( ‘, diikuti keyword VALUE, tanda ‘( ‘, nilai – nilai data dan ditutup tanda ‘( ‘. Nilai yang dimasukkan akan disimpan sesuai dengan urutan nama kolomnya. Data yang berupa String ditulis

dengan menambahkan tanda petik satu didepan dan diakhir , contoh ‘test‘. INSERT INTO <namatabel>

(kolom1>,<kolom2>,......,<kolomN>) VALUES

(<nilai1>,<nilai2>,..........,<nilaiN>);

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Contoh :

INSERT INTO pegawai

(no_id, nm_depan, nm_belakang, umur, kota, propinsi) VALUES

(99023, ‘Agus‘, ‘Maulana‘, 45, ‘Jaksel‘, ‘Jakarta‘);

Mengambil Data.

Pernyataan SELECT digunakan untuk mengambil data tertentu yang sesuai dengan kriteria yang ditentukan. Berikut ini merupakan bentuk sederhana dari pernyataan SELECT :

SELECT <kolom1> [,<kolom2>,...]

FROM <namatabel>

[WHERE <kondisi>];

[ ] = Optional

Berikut ini merupakan bentuk lengkap dari pernyataan SELECT : SELECT [ALL | DISTINCT ] <kolom1> [, <kolom2>]

FROM <tabel1>[, <tabel2>] [WHERE <kondisi>]

[GROUP BY <daftar kolom>] [HAVING <kondisi>]

[ORDER BY <daftar kolom> [ASC | DESC] ]

[ ] = Optional

Nama – nama kolom setelah keyword SELECT menentukan kolom – kolom yang akan dikembalikan sebagai hasil. Untuk memilih semua kolom, kita dapat menggunakan ALL atau ‖(*)‖. Nama tabel setelah keyword FROM menentukan tabel mana yang akan diambil datanya. Klausa WHERE bersifat optional, digunakan untuk menentukan nilai data mana yang akan diambil berdasarkan kriteria yang ditentukan.

Pemilihan kondisi yang digunakan pada klausa WHERE, antara lain : =

Sama dengan .... >

Lebih besar dari .... <

Lebih kecil dari ......

BAHASA PEMROGRAMAN 1

JILID PERTAMA

>= Lebih besar dari atau sama dengan ...... <=

Lebih kecil dari atau sama dengan ..... < > atau ! = Tidak sama dengan ...... LIKE

Pattern matching

LIKE merupakan operator pattern matching yang dapat digunakan pada pemilihan kondisi. LIKE merupakan operator yang powerful, memungkinkan kita untuk memilih kolom – kolom yang sesuai. Tanda ‖%‖ dapat digunakan untuk mencocokkan semua kemungkinan karakter yang mungkin ada sebelum atau sesudah karakter tertentu. Sebagai contoh :

SELECT nama_depan, nama_belakang, kota FROM pegawai WHERE nama_depan LIKE ‘Er%‘;

Pernyataan di atas akan mengambil kolom nm_depan, nm_belakang, dan kota dari tabel pegawai yang nm_depan-nya mempunyai dua karakter awal Er. Atau kita dapat menuliskan :

SELECT nm_depan, nm_belakang FROM pegawai WHERE nm_belakang LIKE ‘%s‘;

Pernyataan di atas akan mengambil kolom nm_depan, nm_belakang dari tabel pegawai yang nm_belakang-nya diakhiri dengan karakter s.

SELECT * FROM pegawai

WHERE nm_depan = ‗Eric‘;

Pernyataan di atas hanya mengambil semua kolom dari tabel pegawai yang nm_depan-nya Eric. SELECT nm_belakang, kota, umur

FROM pegawai WHERE umur > 30;

Pernyataan di atas akan mengambil kolom nm_belakang, kota, umur dari tabel pegawai yang umur-nya lebih dari 30.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Keyword ALL dan DISTINCT digunakan untuk memilih semua (default) atau ‖distinct‖ record yang unik pada hasil query. DISTINCT akan menghilangkan duplikasi record pada kolom yang ditentukan setelah pernyataan SELECT. Sebagai contoh, pernyataan di bawah ini akan menghasilkan record yang unik pada kolom umur dari tabel pegawai.

SELECT DISTINTC umur FROM pegawai;

ALL akan menampilkan semua record pada kolom tertentu termasuk duplikasi-nya. Secara default keyword ALL digunakan pada pernyataan SELECT.

Fungsi aggregate digunakan untuk melakukan perhitungan terhadap hasil query yang berupa numerik dari pernyataan SELECT. Fungsi ini pada dasarnya menyimpulkan hasil dari query pada kolom tertentu. Fungsi ini dapat digunakan secara langsung atau bersama klausa GROUP BY. Fungsi – fungsi aggregate dapat dilihat pada tabel di bawah ini :

Fungsi

Keterangan

MIN Mengembalikan nilai terkecil pada suatu kolom. MAX

Mengembalikan nilai terbesar pada suatu kolom. SUM

Mengembalikan jumlah nilai numerik pada suatu kolom. AVG

Mengembalikan nilai rata – rata pada suatu kolom. COUNT

Mengembalikan jumlah total nilai pada suatu kolom. COUNT (*)

Mengembalikan jumlah baris pada suatu tabel.

Berikut ini merupakan pernyataan yang akan mengembalikan satu hasil berupa rata umur dari tabel pegawai. SELECT AVG (umur)

FROM pegawai;

Untuk menampilkan jumlah record yang ada pada tabel pegawai, kita dapat menuliskan pernyataan seperti di bawah ini.

SELECT COUNT (*) FROM pegawai;

Kalusa GROUP BY digunakan untuk mengambil semua record yang berisi data pada kolom tertentu dan memungkinkan penggunaan fungsi aggregate pada satu atau lebih kolom.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Sebagai contoh, untuk menampilkan daftar umur yang tertinggi disetiap kota, kita dapat menuliskan pernyataan sebagai berikut : SELECT MAX (umur), kota

FROM pegawai GROUP BY kota;

Klausa HAVING memungkinkan kita untuk menentukan kondisi pada record disetiap group, dengan kata lain record mana yang harus dipilih berdasarkan kondisi yang kita tentukan. Kalusa HAVING digunakan bersama klausa GROUP BY.

Sebagai contoh, untuk menampilkan umur rata-rata dari pegawai disetiap kota yang umurnya diatas 30, kita dapat menulis pernyataan sebagai berikut : SELECT kota, AVG (umur)

FROM pegawai GROUP BY kota HAVING umur > 30;

Klausa ORDER BY digunakan untuk menampilkan hasil query dengan urutan tertentu (baik menaik atau menurun). Keyword ASC digunakan untuk menampilkan hasil query dengan urutan menaik dan merupakan pilihan default. ASC digunakan untuk menampilkan hasil query dengan urutan menaik dan merupakan pilihan default. Keyword DESC digunakan untuk menampilkan hasil query dengan urutan menurun.

Sebagai contoh, untuk menampilkan daftar nm_depan, nm_belakang, umur, dan kota dari tabel pegawai dengan urutan menaik berdasarkan nm_depan-nya, kita dapat menuliskan pernyataan sebagai berikut :

SELECT nm_depan, nm_belakang, umur, kota

FROM pegawai ORDER BY nm_depan ASC;

Kita dapat mengurutkan berdasarkan beberapa kolom dengan memisahkan kolom – kolom tersebut dengan tanda koma. Sebagai contoh, untuk menampilkan daftar nm_depan, nm_belakang, umur, dan kota dari tabel pegawai dengan urutan menurun berdasarkan nm_depan dan nm_belakang-nya dapat menuliskan pernyataan sebagai berikut:

SELECT nm_depan, nm_belakang, umur, kota FROM pegawai

ORDER BY nm_depan DESC;

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Meng-update Data.

Pernyataan UPDATE digunakan untuk meng-update atau merubah record yang sesuai dengan kriteria yang telah ditentukan. Berikut ini merupakan bentuk pernyataan UPDATE. UPDATE <namatabel>

SET <namakolom1> = <nilaibaru1>[ , <namakolom2> = <nilaibaru2> …. ]

[WHERE <namakolom> OPERATOR <nilai> [and | or <namakolom> OPERATOR <nilai>] ] ;

[ ] = Optional Sebagai contoh, pernyataan di bawah ini akan merubah kolom umur menjadi umur+1 pada tabel pegawai yang nm_depan-nya Mary dan nm_belakang-nya Williams. UPDATE pegawai

SET umur = umur+1

WHERE nm_depan = ‗Mary‘ AND nm_belakang = ‗williams‘;

Menghapus Data.

Pernyataan DELETE digunakan untuk menghapus record atau baris dari suatu tabel. Berikut ini merupakan bentuk pernyataan DELETE. DELETE FROM <namatabel>

WHERE <namakolom> OPERATOR <nilai> [and | or <namakolom> OPERATOR <nilai>];

[ ] = Optional

Untuk menghapus record/baris dari suatu tabel, tulis ‖DELETE FROM‖ diikuti dengan nama tabel dan klausa WHERE yang berisi kondisi/kriteria untuk menhapus.

CATATAN :

Jika klausa WHERE tidak disertakan, maka semua record pada tabel tersebut akan dihapus.

Sebagai contoh, pernyataan di bawah ini akan menghapus record dari tabel pegawai yang nm_depan-nya Mike atau Eric.

DELETE FROM pegawai

WHERE nm_depan = ‗Mike‘ OR nm_depan = ‗Eric‘;

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Menggabungkan Tabel.

Kita dapat menggabungkan dua atau lebih tabel dalam satu hasil query dengan menggunakan pernyataan SELECT. Kita dapat mengenalinya pada pernyataan SELECT, jika setelah keyword FROM ada lebih dari satu tabel. Kita dapat menggabungkan tabel pegawai dengan tabel gaji.

no_id

Sebagai contoh, untuk menampilkan daftar nm_depan, nm_belakang,gaji, dan tunjangan dari tabel pegawai dan gaji, kita dapat menuliskan pernyataan berikut : SELECT pegawai.nm_depan, pegawai.nm_belakang, gaji.gaji, gaji.tunjangan

FROM pegawai, gaji WHERE pegawai.no_id = gaji.no_id;

BAHASA PEMROGRAMAN 1

JILID PERTAMA

JDBC API Apa itu JDBC API ?

JDBC merupakan singkatan dari Java Database Connectivity. JDBC API merupakan Java API (Application Programming Interface) untuk mengakses secara virtual berbagai jenis tabular data. JDBC API terdiri dari sekumpulan class dan interface yang ditulis dalam bahasa pemrograman Java yang menyediakan standar API sebagai tools dalam mengembangkan database dan memberikan kemudahan bagi pengembang untuk membuat aplikasi – aplikasi database yang sepenuhnya dalam bahasa pemrograman Java.

JDBC API memberikan kemudahan untuk mengirim pernyataan – pernyataan SQL ke relational DBMS dan mendukung penuh fitur – fitur SQL. JDBC API juga dapat berinteraksi dengan berbagai macam sumber data, seperti file – file yang berisi tabular data.

Keuntungan dari JDBC API adalah sebuah aplikasi dapat mengakses secara virtual berbagai sumber data dan dapat berjalan pada berbagai platform dengan Java Virtual Machine. Dengan kata lain, dengan JDBC API, kita tidak perlu membuat satu program untuk mengakses database Microsoft SQL atau database lainnya. Cukup satu program menggunakan JDBC API untuk mengakses berbagai jenis atau sumber data. Kombinasi dari platform Java

dan JDBC API memungkinkan pemrograman untuk melakukan TM ‖write once and run anywhere ‖.

JDBC API memungkinkan untuk melakukan tiga hal, yaitu :  Membangun koneksi dengan database atau berbagai jenis sumber datab tabular data.

 Mengirim pernyataan – pernyataan SQL.  Memproses hasil.

JDBC 3.0 API terdiri dari dua package, yaitu :

1. java.sql package, merupakan core package dari JDBC API.

2. javax.sql package, merupakan package tambahan untuk menambahkan kemampuan server – side dari JDBC API.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Arsitektur Two – Tier dan Three – Tier.

JDBC API mendukung kedua arsitektur two – tier dan three – tier untuk mengakses database. Gambar di bawah ini menggambarkan arsitektur two – tier untuk mengakses database. Pada arsitektur two – tier, sebuah Java applet atau aplikasi berinteraksi langsung ke sumber data. JDBC driver dibutuhkan untuk dapat berkomunikasi dengan sumber data tertentu yang akan diakses. Perintah – perintah dari pengguna dikirim dari database atau sumber data lainnya dan hasilnya dikirim kembali ke pengguna. Sumber data dapat terletak pada komputer lain yang terkoneksi melalui jaringan. Jaringan dapat berupa intranet atau internet.

Java Application Java Application

Client Machine

JDBC

Client Machine

JDBC

DBMS DBMS – Proprietary Protocol – Proprietary Protocol

Database

Database Server Database Server

Gambar : Arsitektur Two-Tier Pada arsitektur three – tier, perintah – perintah dikirim ke layanan ‖middle – tier‖ yang kemudian

mengirimkan perintah tersebut ke sumber data. Sumber data memproses perintah dan mengirimkan hasilnya ke middle – tier, kemudian mengirimkan kembali ke pengguna. Gambar di bawah ini menggambarkan arsitektur three – tier untuk mengakses database.

Arsitektur three – tier sangat menarik karena dengan middle – tier memungkinkan untuk mengontrol akses dan menyederhanakan deployment aplikasi. Pada beberapa kasus, arsitektur three – tier dapat memberikan keuntungan dari sisi kemampuan. Middle – tier biasanya ditulis dengan bahasa pemrograman seperti C atau C++, yang memiliki kemampuan yang tinggi dan cepat.

Java Applet atau HTML Browser Java Applet atau

HTML Browser

Client Machine GUI Client Machine GUI

RMI, HTTP, CORBA, dan RMI, HTTP, CORBA, dan panggilan lainnya

panggilan lainnya

Application Server Application Server

(Business Logic) JDBC Server Machine (Business Logic)

Server Machine

JDBC

DBMS DBMS – Proprietary Protocol – Proprietary Protocol

Database

Database Server Database Server

Gambar : Arsitektur Three-Tier

BAHASA PEMROGRAMAN 1

JILID PERTAMA

JDBC Product Framework.

Sun Microsystems menyediakan framework dari produk – produk komponen JDBC, antara lain :  JDBC driver manager (termasuk sebagai bagian dari Java 2 Platform).

 JDBC – ODBC bridge (disertai pada Java 2 Platform untuk versi Solaris dan Windows).  JDBC API Test Suite (tersedia di website JDBC).

JDBC drivermanager class merupakan backbone dari arsitektur JDBC dan memiliki fungsi utama engkoneksikan aplikasi – aplikasi Java dengan JDBC driver yang sesuai. JDBC – ODBC bridge driver memungkinkan ODBC driver digunakan sebagai JDBC driver. Hal ini diimplementasikan sebagai salah satu cara untuk mendapatkan teknologi JDBC secara cepat atau menyediakan cara untuk mengakses sumber data yang tidak memiliki JDBC driver.

JDBC API Test Suite ditujukan untuk pengembang driver. Test Suite berupa test untuk kompabilitas J2EE dan mengindikasikan apabila sebuah driver kompatibel dengan produk – produk lain yang sesuai dengan spesifikasi J2EE.

Arsitektur JDBC.

JDBC API terdiri dari 2 kumpulan interface utama, yaitu : JDBC API untuk pengembang aplikasi dan JDBC driver terbagi menjadi 4 kategori yang digabung menjadi satu. Aplikasi dan applet dapat mengakses melalui JDBC API dengan menggunakan pure Java JDBC technology-base driver, seperti terlihat pada gambar di bawah ini

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Java Applet atau Application

JDBC API

JDBC Driver atau Data Source Object

Pure Java Pure Java JDBC Driver

JDBC Driver

DB Middleware

Database Database Server

Server

Gambar : Koneksi database menggunakan pure Java JDBC Driver

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Aplikasi Java juga dapat mengakses database melalui JDBC API dengan menggunakan ODBC driver dan database client library, seperti terlihat pada gambar di bawah ini :

Java Applet atau Application

JDBC API

JDBC Driver atau Data Source Object

JDBC-ODBC Partial Java Bridge Driver

JDBC Driver

ODBC DB Client Lib DB Client Lib

Database Database Server

Server

Gambar : Koneksi database menggunakan ODBC Driver dan Database Client Library

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Berdasarkan kedua arsitektur di atas, maka JDBC Driver dapat dibagi 4 tipe, yaitu :  Tipe 1 : JDBC – ODBC Bridge dan ODBC Driver.

Kombinasi ini menyediakan akses JDBC melalui ODBC driver. ODBC berupa binary code dan pada banyak kasus database client code harus diload pada setiap komputer client yang menggunakan JDBC – ODBC bridge. JDBC – ODBC bridge cocok untuk kebutuhan eksperimen dan untuk situasi dimana tidak ada JDBC driver. Ilustrasi tipe 1 ini dapat dilihat pada gambar Koneksi database menggunakan pure Java JDBC Driver.

 Tipe 2 : Native API partly Java technology – enabled driver. Tipe ini mengkonversi perintah JDBC ke dalam

perintah pada client API untuk DBMS tertentu. Seperti pada tipe 1, tipe ini membutuhkan beberapa binary code yang harus diload pada setiap komputer client. Ilustrasi tipe 2 ini dapat dilihat pada gambar di atas.

 Tipe 3 : Pure Java Driver for Database Middleware.

Tipe ini mengkonversi perintah JDBC ke dalam middleware vendor‘s protocol, yang kemudian diterjemahkan ke DBMS protocol oleh middleware server. Middleware menyediakan konektifitas ke banyak database yang berbeda. Ilustrasi tipe 2 ini dapat dilihat pada gambar di atas.

 Tipe 4 : Direct-to-Database Pure Java Driver. Tipe ini mengkonversi perintah JDBC ke dalam Network Protocol yang digunakan langsung oleh DBMS,

memungkinkan koneksi langsung dari komputer client ke DBMS Server dan merupakan solusi yang praktis untuk akses melalui intranet. Ilustrasi tipe 4 ini dapat dilihat pada gambar di atas.

Pada materi ini hanya menggunakan driver tipe 1 (JDBC – ODBC Bridge dan ODBC Driver) dan tipe 4 (Direct-to-Database Pure Java Driver).

Membangun Database

Sebelum kita mulai pemrograman aplikasi database dengan Java, ada beberapa hal yang harus dipersiapkan terlebih dahulu, antara lan :

1. Platform Java, termasuk JDBC API. Jika anda belum memiliki Java 2 Platform Standard Edition Development Kits (JDK), anda dapat menginstall JDK. Pada materi ini menggunakan JDK versi 1.4 atau JDK versi 1.4 keatas dan untuk melihat versi terbaru dari Java 2 Platform, anda dapat melihat di alamat http://java.sun.com/products/JDK/CurrentRelease.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

2. DBMS. Jika anda belum memiliki sebuah DBMS, install-lah MySQL. Pada materi ini menggunakan MySQL versi 4.

3. JDBC Driver. Install-lah JDBC driver untuk MySQL atau letakkan MySQL Connector pada path J2SDK yaitu pada path : C:\j2sdk1.4.2_05\jre\lib\ext, pada materi ini menggunakan MySQL Connector/J 3.1.11.

4. ODBC Driver. Pada materi ini tidak diharuskan meng-install ODBC Driver untuk MySQL, sebab dengan MySQL Connector pun cukup untuk mengkoneksikan program Java dengan MySQL Server. Terkecuali kita ingin mengkoneksikan program Java dengan DBMS atau DBMS Server lainnya.

Membuat Database

Buatlah sebuah database dengan nama ‘tokomajalah‘ dengan menggunakan pernyataan MySQL command line. Jalankan command prompt dan ketiklah C:\mysql\bin\mysql –u –root –p (secara default MySQL terinstall di C:\mysql) atau ketiklah C:\Program Files\xampp\mysql\bin\mysql –u –root –p (apabila menggunakan xampp, secara default xampp terinstall di C:\Program Files\xampp\mysql), kemudian ketiklah password anda untuk login ke MySQL Server atau gunakanlah MySQL-Front atau MySQL-Yog sebagai interface GUI untuk berinteraksi dengan MySQL Server.

Membangun Koneksi

Pertama kali kita perlu membangun sebuah koneksi ke DBMS atau sumber data yang akan digunakan. Untuk membangun koneksi kita perlu melakukan dua hal : me-load JDBC Driver dan membuat koneksi.

Me-load JDBC Driver

Untuk me-load JDBC Driver yang akan digunakan, sangat mudah. Pada materi ini kita hanya menggunakan beberapa cara :

1. Menggunakan ODBC.

Open Database Connectivity (ODBC) merupakan interface berbasis C untuk database engines berbasis SQL. ODBC menyediakan interface yang konsisten untuk berkomunikasi dengan database dan untuk mengakses

BAHASA PEMROGRAMAN 1 JILID PERTAMA JILID PERTAMA

Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

2. Menggunakan MySQL Connector /J 3.1.11.

MySQL menyediakan aplikasi client untuk koneksi ke MySQL Server yang dikembangkan dengan bahasa pemrograman Java melalui JDBC Driver, yang disebut MySQL Connector/J. MySQL Connector/J merupakan JDBC-3.1.11 driver tipe 4 yang artinya driver tersebut dibuat dengan bahasa pemrograman Java murni yang mengimplementasikan spesifikasi JDBC versi 3.0 dan dapat berkomunikasi langsung dengan MySQL Server menggunakan protokol MySQL. Untuk me-load driver-nya, kita dapat menuliskan sebagai berikut :

Class.forName(―com.mysql.jdbc.driver‖).newInstance();

3. Menggunakan driver lain.

Jika anda menggunakan driver lain, bacalah dokumentasi driver tersebut untuk penggunaan class-nya. Sebagai contoh, jika nama class-nya jdbc.DriverX, maka anda dapat menuliskan sebagai berikut :

Class.forName(―com.mysql.jdbc.driverX‖);

Setelah kita me-load driver, maka kita dapat membangun koneksi dengan DBMS.

Membuat Koneksi.

Untuk membuat koneksi, kita dapat melakukan dengan beberapa cara :

1. Menggunakan ODBC.

Jika kita ingin menggunakan ODBC, kita perlu membuat ODBC Data Source Name (DSN). Secara umum untuk membuat koneksi dengan ODBC dapat dituliskan sebagai berikut :

Connection con = DriverManager.getConnection(

ulr, ― my_username ‖, ― my_password ‖);

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Jika kita menggunakan JDBC- ODBC Bridge Driver dan nama ODBC data source adalah ‘tokomajalah‘, maka JDBC url ditulis sebagai berikut : String url = ―jdbc:odbc:tokomajalah‖;

Connection con = DriverManager.getConnection(

ulr, ―root‖, ―‖);

2. Menggunakan MySQL Connector /J 3.1.11.

Secara umum untuk membuat koneksi dengan MySQL Connector /J 3.1.11, dapat dituliskan sebagai berikut : Connection con = DriverManager.getConnection(

―jdbc:mysql://nama_server_or_IP[:no_port]/”+

Nama_database ?user= my_username &‖+

―password= my_password ‖);

Sebagai contoh, jika nama server ‘localhost‘, menggunakan standard port MySQL Server 3306, database yang akan diakses adalah ‘tokomajalah‘, username dan password untuk login ke MySQL ‘root‘ dan ‘‘, maka kita dapat menuliskan sebagai berikut :

Connection con = DriverManager.getConnection(

―jdbc:mysql:/localhost/”+

tokomajalah ?user= root &‖+

―password= ‖);

3. Menggunakan Driver Lain.

Jika anda menggunakan JDBC Driver, bacalah dokumentasi driver tersebut untuk penulisan JDBC url-nya.

Untuk memudahkan membangun koneksi ke DBMS, anda dapat menggunakan template di bawah ini : Template untuk koneksi ke DBMS menggunakan ODBC.

/*

 Template koneksi dengan ODBC  @author anky

*/

import java.sql.*;

public class nama_class {

public static void main(String[]args){

String url = ―jdbc:odbc: DataSourceName ‖;

Connection con;

ty{

//me-load driver Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

}catch(java.lang.ClassNotFoundException e){

System.err.print(―Class Tidak Ditemukan : ―);

System.err.println(e.getMessage()); BAHASA PEMROGRAMAN 1

} try{

JILID PERTAMA

//membuat koneksi

Lanjutannya Template untuk koneksi ke DBMS menggunakan MySQL Connector /J 3.1.11.

*Template untuk koneksi ke DBMS menggunakan MySQL Connector /J 3.1.11@author anky */

import java.sql.*;

public class nama_class {

public static void main(String[]args){

String url = ―jdbc:mysql:// nama_server_or_IP [ :no_port ]/‖+

nama_database ?user= my_username &password= my_password ‖;

Connection con; try{

//me-load driver

Class.forName(―com.mysql.jdbc.Driver‖).newInstance();

}catch(Exception e){

System.err.println(―e.getMessage());

} try{

//membuat koneksi con = DriverManager.getConnection(url);

//lakukan sesuatu dengan koneksi

…………………. BAHASA PEMROGRAMAN 1

…………………. //menutup koneksi

JILID PERTAMA

con.close();

CATATAN :

Jika anda menjalankan program Java yang menggunakan MySQL Connector

/J3.1.11 terdapat kesalahn seperti berikut :

com.mysql.jdbc.Driver SQLException : No suitable driver

Ini artinya program Java tidak dapat menemukan driver tersebut, cobalah untuk menset mysql-connector-java-3.1.11-bin.jar pada Java CLASSPATH.

C:\>set CLASSPATH=folder_mysql-connector-java-3.1.11;

Untuk lebih jelasnya anda dapat melihat dokumentasi Java mengenai

Membuat Tabel.

bagaimana menset CLASSPATH.

Mari kita membuat tabel – tabel yang dibutuhkan sebagai contoh. Tabel MAJALAH berisi informasi mengenai majalah – majalah yang terjual di suatu toko, seperti nama majalah, jumlah majalah terjual dalam seminggu, dan jumlah total majalah terjual saat ini. Secara lengkap tabel MAJALAH dapat dilihat seperti pada tabel di bawah ini :

MJH_ID

NAMA_MJH

PEN_ID

HARGA

TERJUAL TOTAL

0 0 11 Tren Ponsel

10 Java Mania

0 0 12 Sistem Informasi

0 0 13 Java Tips

0 0 14 Tren Komputer

Tabel Majalah

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Kolom MJH_ID menyimpan data nomor identifikasi dari majalah yang memiliki tipe data Integer. Kolom NAMA_MJH menyimpan data nama majalah dengan tipe data VarChar dan memiliki panjang maksimal 32 karakter. Kolom PEN_ID menyimpan data identifikasi penerbit yang memiliki tipe data Integer. Kolom HARGA menyimpan data harga majalah dengan tipe data DECIMAL. Kolom TERJUAL menyimpan data jumlah penjualan majalah dalam seminggu yang memiliki tipe data Integer. Kolom terakhir, TOTAL menyimpan data jumlah total majalah yang terjual.

Tabel kedua adalah PENERBIT yang berisi informasi mengenai setiap penerbit. Secara lengkap tabel PENERBIT dapat dilihat seperti pada tabel di bawah ini :

PEN_ID

NAMA_PEN

JALAN

KOTA

PROPINSI KODE_POS

101 Media Javatindo

DKI Jakarta 12550 49 Komputindo Media Mandiri

Harsono RM No. 70

Jakarta

DKI Jakarta 12440 150

Petogokan II Blok A No. 38

Jakarta

Pustaka Mediatama

Ir. H. Juanda No. 10

Bogor

Jawa Barat 17442

Table Penerbit

Kolom PEN_ID menyimpan data nomor identifikasi penerbit dengan tipe data Integer. Kolom NAMA_PEN menyimpan data nama penerbit yang memiliki tipe data VarChar dengan panjang maksimal 40 karakter. Kolom JALAN menyimpan data nama jalan lokasi penerbit yang memiliki tipe data VarChar dengan panjang maksimal 30 karakter. Kolom KOTA menyimpan data nama kota lokasi penerbit yang memiliki tipe data VarChar dengan panjang maksimal

20. Kolom PROPINSI menyimpan data nama propinsi lokasi penerbit yang memiliki tipe data VarChar dengan panjang maksimal 20. Kolom KODE_POS menyimpan data kode pos lokasi penerbit yang memiliki tipe data CHAR dengan panjang maksimal 5 karakter.

Tabel MAJALAH dan tabel tabel PENERBIT memiliki satu kolom yang sama, yaitu PEN_ID. Kolom PEN_ID merupakan primary key pada tabel PENERBIT sedangkan pada tabel MAJALAH kolom PEN_ID merupakan foreign key.

Pernyataan SQL yang digunakan untuk membuat tabel MAJALAH dan tabel PENERBIT, sebagai berikut :

CREATE TABLE majalah (mjh_id Integer, nama_mjh VarChar(32), pen_id Integer, harga Decimal, terjual Integer, total Integer);

CREATE TABLE penerbit (pen_id Integer, nama_pen VarChar(40), jalan VarChar(30), kota VarChar(20), propinsi VarChar(20), kode_pos Char(5));

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Untuk membuat tabel kita harus membuat JDBC Statement terlebih dahulu. Objek Statement adalah objek yang digunakan untuk mengirim pernyataan SQL ke DBMS. Untuk membuat objek statement, kita memerlukan sebuah koneksi yang aktif. Contoh berikut, kita menggunakan objek Connection con untuk membuat objek Statement stmt.

Statement stmt = con.CreateStatement(); Setelah objek Statement terbentuk, maka kita dapat menjalankannya dengan pernyataan SQL dengan metode ExecuteUpdate. Metode ExecuteUpdate digunakan karena pernyataan SQL yang akan digunakan untuk membuat tabel merupakan pernyataan DDL ( Data Definition Language). Pernyataan SQL seperti CREATE, DROP, dan ALTER merupakan pernyataan – pernyataan DDL dan dijalankan dengan metode ExecuteUpdate. Sebagai contoh, potongan program di bawah ini merupakan pernyataan SQL untuk membuat tabel MAJALAH

String createString = ‖create table majalah ‖+ ‖(mjh_id Integer, ‖+nama_mjh VarChar(32), pen_id Integer, harga Decimal, terjual Integer, total Integer)‖;

Atau kita dapat menuliskannya, sebagai berikut :

stmt.executeUpdate(createString);

stmt.executeUpdate(create table majalah ‖+ ‖(mjh_id Integer, nama_mjh VarChar(32), pen_id Integer, harga Decimal, terjual Integer, total Integer‖));

CATATAN :

Untuk pernyataan SQL pada program Java, kita tidak perlu menambahkan tanda ‗;‘ diakhir pernyataan. Walaupun pada MySQL setiap pernyataan

SQL harus diakhiri dengan tanda ‗;‘. Penambahan tanda ‗;‘ akan dilakukan

secara otomatis oleh JDBC API.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Di bawah ini merupakan listing program BuatTabelMajalah.java untuk membuat tabel majalah. /*

*BuatTabelMajalah.java@author anky

import java.sql.*;

public class BuatTabelMajalah{ public static void main(String[]args){

String url = ―jdbc:odbc:tokomajalah‖;

Connection con; String createString;

createString = ―create table majalah ―+ ―(mjh_id Integer, nama_mjh VarChar(32), pen_id Integer, harga Decimal, ―+ ―terjual Integer, total Integer)‖;

Statement stm;

try{

Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

}catch(java.lang.ClassNotFoundException e){

System.err.print(―Class.NotFoundException : ―);

System.err.println(e.getMessage());

} try{

con = DriverManager.getConnection(url, ―root‖,‖‖);

stmt = con.createStatement(); stmt.executeUpdate(createString); stmt.close();

con.close();

System.out.println(―Tabel Majalah Berhasil Dibuat….‖);

}catch(SQLException ex){

System.err.println(―SQLException : ―+ex.getMessage());

di bawah ini merupakan listing program BuatTabelPenerbit.java untuk membuat tabel penerbit.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

/* *BuatTabelPenerbit.java@author anky

import java.sql.*;

public class BuatTabelMajalah{

public static void main(String[]args){

String url = ―jdbc:odbc:tokomajalah‖;

Connection con;

String createString;

createString = ―create table penerbit ―+ ―(pen_id Integer, nama_pen VarChar(40), jalan VarChar(30), ―+

―kota VarChar(20), propinsi VarChar(20), kode_pos Char(5))‖;

Statement stm; try{

Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

}catch(java.lang.ClassNotFoundException e){

System.err.print(―Class.NotFoundException : ―);

System.err.println(e.getMessage());

try{

con = DriverManager.getConnection(url, ―root‖,‖‖); stmt = con.createStatement(); stmt.executeUpdate(createString); stmt.close();

con.close();

System.out.println(―Tabel Penerbit Berhasil Dibuat….‖);

}catch(SQLException ex){

System.err.println(―SQLException : ―+ex.getMessage());

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Menampilkan Struktur Tabel

Kita dapat mengambil informasi dari duatu tabel, seperti nama, tipe data, ukuran kolom, atau memeriksa apakah kolom tersebut boleh diisi nilai null atau tidak. Sebagai contoh, potongan program di bawah ini akan mengambil informasi dari suatu tabel.

try{

Statement select = con.createStatement(); ResultSet result = select.executeQuery(query);

//mengambil informasi dari hasil query

ResultSetMetaData meta = result.getMetaData();

//mengambil nama tabel String namaTabel = meta.getTableName(1);

//mengambil jumlah total kolom dari tabel int columns = meta.getColumnCount();

String namaKolom, tipeData; int ukuranKolom, nullable; for(int i=1;i<=columns;i++) {

//mengambil nama/label dari kolom namaKolom = meta.getColumnLabel(i);

//mengambil tipe data dari kolom

tipeData = meta.getColumnTypeName(i);

//mengambil ukuran dari kolom ukuranKolom = meta.getColumnDisplaySize(i);

//memeriksa apakah kolom tsb boleh berisi null //jika nilainya 1 berarti boleh (nullabel), jika 0 berarti tidak boleh (not null).

nullable = meta.isNullable(i);

} select.close();

}catch(Exception e){ e.printStackTrace(); }

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Di bawah ini merupakan listing program StrukturTabel.java untuk menampilkan struktur dari tabel majalah dan penerbit.

/* *StrukturTabel.java@author anky

import java.sql.*;

public class StrukturTabel{

public static void getRsMetaData(Connection con, String query){

try{

Statement select = con.createStatement(); ResultSet result = select.executeQuery(query); ResultSetMetaData meta = result.getMetaData();

System.out.println(―Tabel ―+meta.getTableName(1)); System.out.println(―KOLOM―+‖\t Tipe‖+‖\t UKURAN‖+‖\t isNullable‖);

int columns = meta.getColumnCount(); for(int i=1;i<=columns;i++){

//mencetak nama, tipe, dan ukuran kolom

System.out.print(―meta.getColumnLabel(i)+―\t‖ +meta.getColumnTypeName(i)+‖\t‖

+meta.getColumnDisplaySize(i));

//memeriksa apakah kolom boleh berisi Null if(meta.isNullable(i) == ResultSetMetaData.columnNullable)

System.out.println(―\t TRUE‖);

else

System.out.println(―\t FALSE‖);

} //mencetak jumlah total kolom

System.out.println(―Total Kolom : ―+column+‖\n‖);

Select.close(); }catch(Exception e){

e.printStackTrace();

} public static void main(String[]args){

String url = ―jdbc:odbc:tokomajalah‖; String username = ―root‖;

String password = ―‖; Connection con;

try{

Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

}catch(Exception e){

System.out.p rintln(―Gagal Me-load JDBC/ODBC Driver‖); return;

} try{

con = DriverManager.getConnection(url, username, password);

getRsMetaData(con, ―Select * from majalah‖); BAHASA PEMROGRAMAN 1

System.out.println();

getRsMetaData(con, ―select * from penerbit‖);

JILID PERTAMA

con.close();

}catch(Exception e){

e.printStackTrace();

Jika program di atas dijalankan, maka akan terlihat tampilan seperti berikut : Table majalah

mjh_id

11 True nama_mjh

Integer

32 True pen_id

VarChar

11 True harga

Integer

10 True terjual

Decimal

11 True total

Integer

11 True Total kolom : 6

Integer

Table penerbit

pen_id

11 True nama_pen

Integer

40 True jalan

VarChar

30 True kota

VarChar

20 True propinsi

VarChar

20 True kode_pos

VarChar

5 True Total kolom : 6

Char

Menghapus Tabel

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Untuk menghapus table, kita dapat menggunakan pernyataan SQL DROP TABLE. Untuk menghapus sebuah tabel secara keseluruhan termasuk semua baris/record di dalamnya, kita dapat memberikan pernyataan DROP TABLE diikuti dengan nama tabelnya. DROP TABLE berbeda dengan menghapus semua baris pada suatu tabel. Menghapus semua baris suatu tabel tidak menghapus definisi tabel. Sedangkan DROP TABLE, akan menhapus semua baris dan definisi tabel dari database. Potongan program berikut digunakan untuk menghapus tabel dengan nama temp.

try{

Connection con = DriverManager.getConnection( …);

Statement stmt = con.createStatement();

//menghapus tabel

Stmt.executeUpdate(―drop table temp‖);

stmt.close(); con.close();

}catch(SQLException ex){

} Listing program HapusTabel.java di bawah ini, memberikan contoh bagaimana membuat tabel temp, menampilkan strukturnya dan menghapus kembali tabel tersebut.

*HapusTabel.java@author anky */

import java.sql.*;

public class HapusTabel{

public static void getRsMetaData(Connection con, String query){

try{

Statement select = con.createStatement();

ResultSet result = select.executeQuery(query);

ResultSetMetaData meta = result.getMetaData();

System.out.println(―Tabel ―+meta.getTableName(1)); System.out.println(―KOLOM‖+‖\t ―TIPE‖+‖\t UKURAN‖+ ―\t isNullable‖); int columns = meta.getColumnCount(); for(int i=1;i<=columns;i++){

System.out.print(―meta.getColumnLabel(i)+―\t‖ +meta.getColumnTypeName(i)+‖\t‖ +meta.getColumnDisplaySize(i));

if(meta.isNullable(i) == ResultSetMetaData.columnNullabel)

System.out.println(―\t TRUE‖);

else S ystem.out.println(―\t FALSE‖); } System.out.println(―Total kolom : ―+columns+‖\n‖); select.close();

BAHASA PEMROGRAMAN 1

}catch(Exception e){

System.out.println(e.getMessage());

JILID PERTAMA JILID PERTAMA

try{

Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

}catch(Exception e){

System.out.println(―Gagal Me-load JDBC/ODBC Driver‖); return;

try{

con = DriverManager.getConnction(url, username, password);

//menampilkan struktur tabel temp

geRSMetaData(con, ―select * from temp‖);

//menghapus tabel temp query = ―drop table temp‖; select.executeUpdate(query);

//menampilkan kembali struktur tabel setelah dihapus getRSMetaData(con, ―select * from temp‖); con.close();

}catch(Exception e){ System.out.println(e.getMessage()); }

Jika HapusTabel.java dijalankan, maka akan terlihat tampilan seperti berikut : Tabel temp

ID Integer

11 TRUE

10 TRUE Total Kolom : 2

Nama

VarChar

[ MySQL ] [ ODBC 3.51 Driver] [mysqld-4.0.12-nt ] Table ‗tokomajalah‘ doesn‘t exist

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Pesan kesalahan Table ‗tokomajalah.temp‘ doesn‘t exist terjadi karena tabel temp telah dihapus.

Modifikasi Tabel.

Definisi dari suatu tabel dapat dimodifikasi, kita dapat menambah atau menghapus kolom, mengubah definisi dari kolom, mengubah definisi dari kolom, dan menambah atau menghapus batasan – batasan (constraints) dari suatu tabel. Kita dapat melakukannya dengan pernyataan SQL ALTER TABLE. Sebagai contoh, menambahkan kolom NO_TEL pada tabel penerbit, kita dapat menggunakan pernyataan berikut :

Connection con = DriverManager.getConnection(…);

Statement stmt = con.createStatement();

Untuk menghapus kolom kode_pos pada tabel penerbit, kita dapat menggunakan pernyataan berikut : String alterQ = ―alter table penerbit add no_tel VarChar(10)‖;

Stmt.executeUpdate(alterQ);

Connection con = DriverManager.getConnection(…);

Statement stmt = con.createStatement();

String alterQ = ―alter table penerbit drop kode_pos‖;

Stmt.executeUpdate(alterQ);

Listing program ModifikasiTabel.java di bawah ini, memberikan contoh bagaimana memodifikasi tabel penerbit. /*

*ModifikasiTabel.java@author anky */

import java.sql.*;

public class ModifikasiTabel{

public static void getRsMetaData(Connection con, String query){

try{ Statement select = con.createStatement();

ResultSet result = select.executeQuery(query); ResultSetMetaData meta = result.getMetaData();

System.out.printl n(―Tabel ―+meta.getTableName(1)); System.out.println(―KOLOM‖+‖\t ―TIPE‖+‖\t UKURAN‖+

―\t isNullable‖);

int columns = meta.getColumnCount(); for(int i=1;i<=columns;i++){

System.out.print(―meta.getColumnLabel(i)+―\t‖ +meta.getColumnTyp eName(i)+‖\t‖

+meta.getColumnDisplaySize(i));

if(meta.isNullable(i) == ResultSetMetaData.columnNullabel)

System.out.println(―\t TRUE‖);

else

System.out.println(―\t FALSE‖); }

System.out.println(―Total kolom : ―+columns+‖\n‖); select.close();

}catch(Exception e){

System.out.println(e.getMessage());

BAHASA PEMROGRAMAN 1

public static void main(String[]args){ JILID PERTAMA

String url = ―jdbc:odbc:tokomajalah‖; String username = ―root‖;

Jika ModifikasiTabel.java dijalankan, maka akan terlihat tampilan seperti berikut : Struktur tabel sebelum ditambahkan kolom no_tel

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Tabel Penerbit

pen_id

Integer

11 TRUE

nama_pen

kode_pos

VarChar

5 TRUE

Total Kolom : 6

Struktur tabel setelah ditambahkan kolom no_tel

Tabel Penerbit

pen_id

Integer

11 TRUE

nama_pen

kode_pos

VarChar

5 TRUE

no_tel

VarChar

10 TRUE

Total Kolom : 7

Struktur tabel setelah kolom no_tel dihapus

Tabel Penerbit

pen_id

Integer

11 TRUE

nama_pen

kode_pos

VarChar

5 TRUE

Total Kolom : 6

Manipulasi Database

BAHASA PEMROGRAMAN 1

JILID PERTAMA

1. Menambah Data.

Pada tulisan sebelumnya telah dibahas bagaimana membuat tabel majalah dengan menentukan nama kolom – kolomnya dan tipe – tipe data untuk kolom tersebut. Kita hanya membuat struktur tabelnya saja, tabel tersebut belum berisi data apapun. Kita akan memasukkan data ke dalam tabel tersebut satu per satu dengan memberikan data yang akan disimpan disetiap kolomnya. Nilai – nilai yang akan dimasukkan berurutan sesuai dengan urutan kolom – kolom saat tabel tersebut dibuat.

Potongan program berikut akan menambahkan satu baris/record dengan nilai 10 pada kolom terjual dan 0 pada kolom total. Kita akan membuat objek Statement dan menggunakan methode executeUpdate untuk menjalankannya. Connection con = DriverManager.getConnection(…);

Statement stmt = con.createStatement();

stmt.executeUpdate(insert into majalah ―+

―values (10, ‗Java Mania‘, ‗101, 7000, 0, 0);‖ );

Potongan program berikut akan menambahkan record selanjutnya ke dalam tabel majalah. Kita tidak perlu membuat kembali objek Statement stmt.

stmt.executeUpdate(―insert into majalah values (11, ‗Tren Ponsel‘, 49, 8000, 0, 0)); stmt.executeUpdate(―insert into majalah values(12, ‗Sistem Informasi‘, 150, 9000, 0, 0)‖); stmt.executeUpdate(―insert into majalah values(13, ‗Java Tips‘, 101, 8000, 0, 0)‖); stmt.executeUpdate(―insert into majalah values(14, ‗Tren Komputer‘, 49, 9000, 0, 0)‖);

Listing program MenambahData.java di bawah ini, memberikan contoh bagaimana memasukkan/menambah data pada tabel majalah dan tabel penerbit.

/*

*MenambahData.java@author anky

*/

import java.sql.*;

public class MenambahData{

public static void main(String[]args){

String url = ―jdbc:odbc:tokomajalah‖;

Connection con; Statement stmt; String query; ResultSet rs; int jumlahRecord;

try{

Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖); catch(java.lang.ClassNotFoundException e){ }

Syst em.err.print(―ClassNotFoundException : ―); System.err.println(e.getMessage());

} try{

con = DriverManager.getConnection(url, ―root‖, ―‖);

stmt = con.createStatement(); BAHASA PEMROGRAMAN 1

JILID PERTAMA

//menghitung jumlah record

query = ―select count(*) from majalah‖;

//menghitung jumlah record rs = stmt.executeQuery(query); rs.next(); jumlahRecord = rs.getInt(1); System.out.println(―Tabel penerbit setelah ditambah...‖); System.out.println(‖Jumlah Record = ‖+jumlahRecord);

BAHASA PEMROGRAMAN 1

stmt.close();

JILID PERTAMA

con.close(); }catch(SQLException ex){

Jika program MenambahData.java dijalankan, akan menampilkan hasil seperti berikut : Tabel majalah sebelum ditambah Jumlah record = 0 Tabel majalah setelah ditambah Jumlah record = 5 Tabel penerbit sebelum ditambah Jumlah record = 0 Tabel penerbit setelah ditambah Jumlah record = 3

Mengambil Data

Setelah kita memasukkan atau menambah data pada tabel kita dapat mengambil data dari tabel tersebut. Untuk mengambil data dari tabel tersebut. Untuk mengambil data dari tabel, kita dapat menggunakan pernyataan SELECT, kemudian mengirim ke database melalui program Java.

JDBC API mengembalikan hasil query dalam bentuk objek ResultSet, oleh karena itu kita perlu membuat instance dari kelas ResultSet untuk menampung hasil query. Potongan program berikut merupakan contoh deklarasi objek ResultSet rs dan mengirimkan sebuah query.

ResultSet rs = stmt.executeQuery(―select nama_mjh, harga from majalah‖); Variabel rs berisi hasil query, untuk mengakses nama majalah dan harganya, kita perlu menuju ke setiap baris dan mengambil nilai-nya sesuai dengan tipe datanya. Method next digunakan untuk menggerakkan yang disebut

BAHASA PEMROGRAMAN 1 JILID PERTAMA JILID PERTAMA

Untuk mengambil nilai data yang sesuai dengan nilai pada setiap kolom tabel, kita dapat menggunakan method getXXX (sebagai contoh, getInt, getString, getDouble, dan sebagainya). JDBC API menawarkan 2 cara untuk mengidentifikasikan kolom yang digunakan oleh method getXXX untuk mengambil sebuah nilai. Cara pertama adalah dengan memberikan nama kolomnya, yang kedua adalah dengan memberikan indeks dari kolomnya.

Potongan program berikut ini merupakan contoh untuk mengambil nilai dari kolom nama_mjh dan harga dari tabel majalah. String query = ―select nama_mjh, harga from majalah‖;

Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query);

while(rs.next()){

String nama = rs.getString(―nama_mjh‖); int harga = rs.getInt(‖harga‖);

System.out.println(nama + ‖

‖ + harga);

Atau kita dapat menuliskan seperti berikut : String query = ―select nama_mjh, harga from majalah‖;

Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query);

while(rs.next()){

String nama = rs.getString(1); int harga = rs.getInt(2);

System.out.println(nama + ‖

‖ + harga);

JDBC Driver harus mengkonversi antara tipe data pada database dan tipe data yang sesuai pada Java untuk setiap method getXXX. JDBC Driver tidak memperbolehkan kita melakukan konversi yang tidak benar (sebagai

BAHASA PEMROGRAMAN 1 JILID PERTAMA JILID PERTAMA

Tabel : Konversi tipe data yang sering digunakan

Java Method SQL Type

TIME STAMP

getObject

Any type

Sebagai contoh, untuk mendapatkan ResultSet yang berisi record – record dari nama dan tanggal, kita dapat menggunakan method getString dan getDate. Listing program MengambilData.java di bawah ini memberikan contoh bagaimana menampilkan daftar nama majalah, nama penerbit, dan harganya dari tabel majalah dan penerbit diurutkan berdasarkan nama majalah. /*

*MengambilData.java@author anky */

import java.sql.*;

public class MengambilData{

public static void main(String[]args){

String url = ―jdbc:odbc:tokomajalah‖; String username = ―root‖;

String password = ―‖; Connection con;

Statement stmt; String query;

String namaMajalah, namaPenerbit; int harga, jmlMajalah;

try{

Class.fo rName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

}catch(java.lang.ClassNotFoundException e){

System.err.print(―ClassNotFoundException : ―); System.err.println(e.getMessage());

} try{

con = DriverManager.getConnection(url, username, password);

stmt = con.createStatement(); BAHASA PEMROGRAMAN 1

//query untuk menampilkan nama majalah, nama penerbit, dan harganya JILID PERTAMA

query = ‖select nama_mjh, nama_pen, harga from majalah, penerbit‖+ ―where majalah.pen_id = penerbit.pen_id order by nama_mjh ASC‖;

Jika program MengambilData.java dijalankan, maka akan menampilkan hasil sebagai berikut :

DAFTAR MAJALAH DI TOKO MAJALAH

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Majalah : Java Mania Penerbit : Media Javatindo Harga : Rp. 7000,-

Majalah : Java Tips Penerbit : Media Javatindo Harga : Rp. 8000,-

Majalah : Sistem Informasi Penerbit : Pustaka Mediatama Harga : Rp. 9000,-

Majalah : Tren Ponsel Penerbit : Komputindo Media Mandiri Harga : Rp. 8000,- ______________________________________________________________________________________________________ Total Majalah = 5 Buah

Menghapus Data.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Untuk menghapus data pada sebuah tabel, kita dapat menggunakan pernyataan SQL DELETE FROM dan mengirmkan ke database melalui JDBC API. Potongan program berikut merupakan contoh menghapus record pada tabel penerbit yang memiliki nomor identifikasi penerbit (pen_id) 200.

Connection con = DriverManager.getConnection(…);

Statement stmt = con.createStatement();

st mt.executeUpdate(―delete from penerbit where pen_id = ‗200‘ ―);

CATATAN :

Hati – hati dalam penggunaan perintah SQL DELETE FROM, sertakanlah keyword WHERE untuk memilih record – record mana yang akan dihapus.

Jika keyword WHERE tidak disertakan, maka akan menghapus semua record pada tabel tersebut…!!!!

Listing program MenghapusData.java merupakan contoh lengkap bagaimana menghapus record dari tabel penerbit. /*

*MenghapusData.java@author anky */

import java.sql.*;

public class MenghapusData{

public static void main(String[]args){

String url = ―jdbc:odbc:tokomajalah‖; String username = ―root‖;

String p assword = ―‖; Connection con;

Statement stmt; String query;

ResultSet rs; int jumlahRecord;

try{

Class.forName(―sun.jdbc.odbc.JdbcOdbcDriver‖);

}catch(java.lang.ClassNotFoundExcepton e){

System.err.print(―ClassNotFoundException : ―+e.getMessage());

try{

con = DriverManager.getConnection(url, username, password); stmt = con.createStatement();

//menambah data pada tabel penerbit stmt.executeUpdate(‖insert into penerbit ‖+

―values (200, ‗MediaJava Indonesia‘,‘Taman Sari No. 70‘, ‗Bandung‘, ―+ BAHASA PEMROGRAMAN 1

―‘Jawa Barat‘, ‗22550‘)‖);

JILID PERTAMA

//mengambil record setelah ditambah

Jika program MenghapusData.java dijalankan, maka akan menghasilkan tampilan seperti berikut :

BAHASA PEMROGRAMAN 1

JILID PERTAMA

Tabel Penerbit Sebelum Dihapus... Pen_ID

Nama Penerbit 101

Media Javatindo

49 Komputindo Media Mandiri 150

Pustaka Mediatama 200

MediaJava Indonesia

Tabel Penerbit Setelah Dihapus… Pen_ID

Nama Penerbit 101

Media Javatindo

49 Komputindo Media Mandiri 150

Pustaka Mediatama

Meng-update Data.

Untuk meng-update kolom pada suatu tabel, kita dapat menggunakan pernyataan SQL UPDATE dan mengirimkannya ke database. Potongan program berikut akan meng-update satu record pada tabel majalah yang kolom nama_mjh- nya ‘Java Mania‘ dengan mengisi nilai 75 pada kolom terjual.

String updateString = ―update majalah ―+

―set terjual = 75 ―+ ―where nama_mjh = ‗Java Mania‘ ―;

stmt.executeUpdate(updateString);

Program MengupdateData.java merupakan contoh program lengkap yang akan meng-update record pada tabel majalah yang nama_mjh- nya ‘Java Mania‘ dengan merubah nilai 75 pada kolom terjual dan kemudian menambahkan kolom total dengan kolom terjual.

BAHASA PEMROGRAMAN 1

JILID PERTAMA

2.

Dokumen yang terkait

Analisis Komparasi Internet Financial Local Government Reporting Pada Website Resmi Kabupaten dan Kota di Jawa Timur The Comparison Analysis of Internet Financial Local Government Reporting on Official Website of Regency and City in East Java

19 819 7

ANALISIS KOMPONEN MAKNA KATA YANG BERMAKNA DASAR MEMUKUL DALAM BAHASA MADURA DIALEK PAMEKASAN

28 440 50

EFEKTIVITAS PENGAJARAN BAHASA INGGRIS MELALUI MEDIA LAGU BAGI SISWA PROGRAM EARLY LEARNERS DI EF ENGLISH FIRST NUSANTARA JEMBER

10 152 10

Hubungan Antara Kompetensi Pendidik Dengan Kecerdasan Jamak Anak Usia Dini di PAUD As Shobier Kecamatan Jenggawah Kabupaten Jember

4 116 4

Hubungan antara Kondisi Psikologis dengan Hasil Belajar Bahasa Indonesia Kelas IX Kelompok Belajar Paket B Rukun Sentosa Kabupaten Lamongan Tahun Pelajaran 2012-2013

12 269 5

Improving the Eighth Year Students' Tense Achievement and Active Participation by Giving Positive Reinforcement at SMPN 1 Silo in the 2013/2014 Academic Year

7 202 3

JENIS-JENIS KALIMAT INTEROGATIF BAHASA INDONESIA DI PERSIDANGAN PENGADILAN NEGERI JEMBER

7 105 16

Implementasi Program Dinamika Kelompok Terhada Lanjut Usia Di Panti Sosial Tresna Werdha (Pstw) Budi Mulia 1 Cipayung Jakarta Timur

10 166 162

PENGGUNAAN BAHASA JURNALISTIK PADA TERAS BERITA HEADLINE HARIAN UMUM GALAMEDIA

8 75 43

Perancangan Sistem Informasi Akuntansi Laporan Keuangan Arus Kas Pada PT. Tiki Jalur Nugraha Ekakurir Cabang Bandung Dengan Menggunakan Software Microsoft Visual Basic 6.0 Dan SQL Server 2000 Berbasis Client Server

32 174 203