MySQL Dan Java Database Connectivity
MySQL Dan Java Database Connectivity
Twitter : http://twitter.com/echo_khannedy
FaceBook : http://www.facebook.com/khannedy
YouTube : http://www.youtube.com/user/echokhannedy
Skype : echo.khannedy
GMail : [email protected]
Yahoo Messenger : echo.khannedy
Telepon Genggam : +6285292775999
Daftar Isi
Untuk memastikan kembali bahwa benar-benar database yang anda buat ada
gunakan perintah :
SHOW DATABASES;
Maka MySQL akan memunculkan seluruh nama database yang terdapat dalam
DBMS :
Gambar 4 Tampilan Seluruh Tabel
Dan pastikan bahwa database “SWING” atau database yang telah anda buat tadi
terdapat dalam DBMS.
Sebelum kita membuat sebuah tabel kita juga harus menyetakan bahwa kita akan
membuat tabel tersebut dalam database “SWING” atau yang anda buat
sebelumnya dengan menggunakan perintah :
USE NAMA_DATABASE;
Misal :
Gambar 5 menggunakan Database
Dengan begitu saat ini kita telah berada dalam database “SWING”. SwingUntuk
membuat tabel dalam MySQL kita menggunakan perintah seperti dibawah ini :
Dan saat ini kita telah membuat tabel bernama mahasiswa. Dan untuk
meyakinkan bahwa tabel benar-benar telah dibuat, maka gunakan perintah :
SHOW TABLES;
Perintah diatas digunakan untuk menampilkan tabel yang ada dalam sebuah
database.
Dan untuk memastikan bahwa tabel telah terhapus tanpilkanlah seluruh tabel
yang ada dalam database tersebut :
Gambar 9 Menampilkan Tabel
Misal :
Diatas kita hanya memasukkan 1 record/baris. Jika kita akan memasukkan lebih
dari satu record kita juga bisa menggunakan perintah diatas, misal :
Gambar 16 Memasukkan Data Ke Tabel IDENTITAS Lebih Dari Satu
SELECT
[NAMA_ATRIBUTE, ...]
FROM
[NAMA_TABEL ,...];
Namun jika kita akan menampilkan seluruh data yang ada dalam tabel kita bisa
mengguanakan perintah :
SELECT *
FROM
[NAMA_TABEL , ...];
SELECT
[NAMA_ATRIBUT,...]
FROM
[NAMA_TABEL, ...]
WHERE
[KONDISI...]
Misal kita akan menampilkan data identitas yang memiliki NAMA = ‘Tono Sutono’
:
Gambar 20 Menampilkan Data Dalam Tabel IDENTITAS Yang Memiliki NAMA = 'Tono Sutono'
Selain menggunakan tanda “=” atau dikenal dengan EQUAL, kita juga bisa
menggunakan tanda >, >=, <, != dan <= sebagai operasi dalam penyaringan. Misal
kita akan menampilkan data yang memiliki ID > 1 :
Pada proses penyaringan diatas, kita hanya menggunakan satu kondisi, namun
sebenarnya kita bisa menggunakan lebih dari satu kondisi, misal kita akan
menampilkan data yang memiliki ID > 1 dan ALAMAT = ‘Sumenep’ dan untuk
menggunakan lebih dari satu konsisi kita bisa menggunakan penghubung AND
atau OR:
Gambar 22 Menampilkan Data Dalam Tabel IDENTITAS Yang Memiliki ID > 1 Dan ALAMAT =
'Sumenep'
Gambar 23 Menampilkan Data Dalam Tabel IDENTITAS Yang Memiliki ID > 1 Atau ALAMAT =
'Sumenep'
...
WHERE
NAMA_ATRIBUTE LIKE ‘REGEX’;
Misal kita akan menampilkan data dengan NAMA yang mimiliki awalan ‘T’ :
Gambar 24 Menampilkan Data Dalam Tabel IDENTITAS Yang Memiliki NAMA Berawalkan 't'
Untuk menampilkan data yang memiliki akhiran ‘o’ kita bisa menggunakan regex
‘%o’ dan untuk menampilkan data yang mengandung ‘o’ kita bisa menggunakan
regex ‘%o%’ :
Gambar 25 Menampilkan Data Dalam Tabel IDENTITAS Yang Memiliki NAMA Berakhiran 'o'
Gambar 26 Menampilkan Data Dalam Tabel IDENTITAS yang Memiliki NAMA Mengandung 'o'
UPDATE NAMA_TABEL
SET
NAMA_ATRIBUT = “NILAI BARU”,
...
[WHERE KONDISI]
Untuk memastikan bahwa data telah terhapus, tampilkan seluruh data dalam
tabel IDENTITAS :
Gambar 32 Menampilkan Seluruh Data Dalam Tabel IDENTITAS
Jika kita ingin menghapus seluruh data dalam tabel IDENTITAS kita bisa
menggunakan perintah diatas tanpa menggunakan kondisi :
Untuk memastikan seluruh data selah terhapus, tampilkan data dalam tabel
IDENTITAS :
Gambar 34 Menampilkan Seluruh Data Dalam Tabel IDENTITAS
Empty menyatakan bahwa dalam tabel tersebut tak memiliki data / baris.
2 Java Database Connectivity
JDBC (Java Database Connectivity) merupakan library yang digunakan untuk
mengkoneksikan DBMS dengan Java, baik itu MySQL, Oracle, Microsoft ODBC dan
DBMS lainnya. Dan dalam buku ini kita menggunakan MySQL sebagai DBMSnya.
2.1.1 Netbeans
Untuk menggunakan / memasukkan library MySQLConnectorJava ke sebuah
project, kita bisa memasukkannya lewat library dengan cara mengklik kanan
paket library, lalu pilih Add Jar/Folder :
Setelah itu klik OPEN dan secara otomatis library MySQLConnectorJava akan
terinclude dalam Project Netbeans :
2.1.2 Eclipse
Untuk memasukkan MySQLConnectorJava dalam sebuah project Eclipse kita bisa
mengklik kanan project tersebut lalu pilih Build Path > Add External Archives...
Gambar 38 Memasukkan Library MySQLConnectorJava dalam Eclipse
2.2 Driver
Untuk membuat koneksi dari Java ke MySQL kita memerlukan class yang bernama
Driver. Dan setiap connector (yang kita gunakan MySQLConnectorJava) memiliki
Driver masing-masing yang selalu mengimplementasi class Driver yang ada dalam
paket “java.sql”. dan untuk mengecek keberadaan Driver dalam
MySQLConnectorJava gunakan perintah seperti ini :
Class.forName("com.mysql.jdbc.Driver").newInstance();
package usu.jdbc;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class DriverTest {
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Proses Deteksi Driver
Berhasil");
} catch (final InstantiationException ex) {
} catch (final IllegalAccessException ex) {
} catch (final ClassNotFoundException ex) {
}
}
}
Java 1 DriverTest.java
Jika berhasil proses run akan menampilkan tulisan “Proses Deteksi Driver
Berhasil”, namun jika terjadi kesalahan, dimungkinkan kesalahan terjadi jika
class Driver tak ditemukan atau library MySQLConnectorJava belum terdapat
dalam project yang anda buat.
2.3 Connection
Setelah mengenal Driver untuk menghubungkan Java dan MySQL kita harus
membuat Connection yang terdapat dalam paket “java.sql”. Dan untuk membuat
Connection, kita harus mengetahui host, port, dan nama database yang akan kita
gunakan. Selain itu kita juga harus mengetahui username dan password yang
digunakan untuk koneksi MySQL tersebut.
Sekarang kita coba membuat class untuk mengetes koneksi database yang telah
kita buat pada bab sebelumnya :
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class ConnectionTest {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Jika proses run berhasil, maka akan tampil tulisan “ Koneksi Berhasi”, dan jika
gagal dimungkinkan database yang dibuat tidak ditemukan atau username dan
password yang digunakan salah.
2.4 Statement
Statement merupakan class yang terdapat dalam paket “java.sql” yang dapat
digunakan sebagai pengeksekusi perintah-perintah SQL. Misal tadi kita mengenal
proses INSERT, UPDATE, SELECT dan DELETE dalam MySQL, dan kita juga bisa
menggunakan perintah-perintah tersebut lewat Statement. Untuk membuat
Statement kita dapat menggunakan Connection :
Misal kita akan membuat Statement untuk database yang kita buat tadi :
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class StatementTest {
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Statement Berhasil");
} catch (final SQLException ex) {
} catch (final InstantiationException ex) {
} catch (final IllegalAccessException ex) {
} catch (final ClassNotFoundException ex) {
}
}
}
Java 3 StatementTest.java
Misal kita akan menambah data ke dalam tabel IDENTITAS yang ada dalam
database USU tadi yang telah kita buat :
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class StatementInsert {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Setelah anda jalankan maka otomatis perintah tersebut akan dieksekusi ke dalam
MySQL, dan untuk melihat hasil eksekusi, tampilkanlah isi data dalam tabel
IDENTITAS :
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class StatementUpdate {
Class.forName("com.mysql.jdbc.Driver").newInstance();
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class StatementDelete {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Diatas saya menghapus data yang memiliki ID = 11, dan setelah di run, maka data
yang memiliki ID = 11 akan dihapus dalam tabel IDENTITAS :
2.5 ResultSet
Mungkin anda bertanya kenapa dalam proses Statement diatas saya tidak
membahas perintah SELECT, yang notabenenya untuk menampilkan data, saya
membutuhkan perintah SELECT. Hal ini karena SELECT merupakan perintah yang
menghasilkan kumpulan data dalam tabel yang ada dalam database, sehingga
untuk mendapatkannya kita membutuhkan bantuan class yang bernama
ResultSet yang ada dalam paket java.sql.
Sebelum kita menggunakan ResultSet, alangkan baiknya kita isi tabel IDENTITAS
yang tadi kita buat dengan beberapa data, misal kita masukkan data ini :
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class ResultSetBefore {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Setelah kode diatas di run, maka anda akan mendapatkan tabel IDENTITAS
berisikan dalam tabel diatas :
Gambar 44 Menampilkan Seluruh Data Dalam Tabel IDENTITAS
Perlu anda ketahui untuk mendapatkan record dalam ResultSet kita bisa
menggunakan metode next() untuk mengecek apakah ada record lagi setelah
record ini dan prev() untuk mengecek apakah ada record sebelum record yang
saat ini terseleksi.
Dan untuk mendapatkan data dalam atribut tersebut kita menggunakan metode
get*TypeData+(“NAMA_ATRIBUT”) milik ResultSet, misal untuk mendapatkan data
tabel IDENTITAS yang kita buat kita menggunakan :
int id = result.getInt("ID");
String nama = result.getString("NAMA");
Date tanggalLahir = result.getDate("TANGGAL_LAHIR");
String alamat = result.getString("ALAMAT");
String kontak = result.getString("KONTAK");
Dari kode diatas kita bisa tahu kali kita akan mengisi nilai int id dengan data yang
ada dalam atribut ID, dan kita akan mengisi nilai String nama dengan data yang
ada dalam atribut NAMA, dan selanjutnya.
Sekarang kita coba untuk membuat kode yang akan menampilkan seluruh data
dalam Tabel IDENTITAS :
package usu.jdbc;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class ResultSetIdentitas {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Setelah anda run, anda akan mendapat tampilan seperti dibawah ini :
ID : 10
NAMA : Eko Kurniawan
TANGGAL LAHIR : 1988-12-29
ALAMAT : Bandung
KONTAK : [email protected]
------------------------------
ID : 100
NAMA : Budi
TANGGAL LAHIR : 1982-05-17
ALAMAT : Bandung
KONTAK : [email protected]
------------------------------
ID : 101
NAMA : Sumarno
TANGGAL LAHIR : 1986-09-10
ALAMAT : Surabaya
KONTAK : [email protected]
------------------------------
ID : 102
NAMA : Tukiyem
TANGGAL LAHIR : 1978-10-10
ALAMAT : Semarang
KONTAK : [email protected]
------------------------------
ID : 103
NAMA : Sumarni
TANGGAL LAHIR : 1988-03-17
ALAMAT : Surabaya
KONTAK : [email protected]
------------------------------
ID : 104
NAMA : Rudi
TANGGAL LAHIR : 1986-07-10
ALAMAT : Bandung
KONTAK : [email protected]
------------------------------
ID : 105
NAMA : Friko
TANGGAL LAHIR : 1987-09-09
ALAMAT : Bogor
KONTAK : [email protected]
------------------------------
ID : 106
NAMA : Purwangga
TANGGAL LAHIR : 1988-08-09
ALAMAT : Subang
KONTAK : [email protected]
------------------------------
ID : 107
NAMA : Joko
TANGGAL LAHIR : 1987-10-10
ALAMAT : Cirebon
KONTAK : [email protected]
------------------------------
ID : 108
NAMA : Hisyam
TANGGAL LAHIR : 1988-01-01
ALAMAT : Depok
KONTAK : [email protected]
------------------------------
Contoh lain? OK sekarang kita akan menampilkan seluruh data yang memiliki
email di yahoo.com :
package usu.jdbc;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class ResultSetIdentitasYahoo {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Setelah kode diatas diRun, maka anda akan mendapat tampilan seperti ini :
ID : 102
NAMA : Tukiyem
TANGGAL LAHIR : 1978-10-10
ALAMAT : Semarang
KONTAK : [email protected]
------------------------------
ID : 105
NAMA : Friko
TANGGAL LAHIR : 1987-09-09
ALAMAT : Bogor
KONTAK : [email protected]
------------------------------
ID : 106
NAMA : Purwangga
TANGGAL LAHIR : 1988-08-09
ALAMAT : Subang
KONTAK : [email protected]
------------------------------
ID : 107
NAMA : Joko
TANGGAL LAHIR : 1987-10-10
ALAMAT : Cirebon
KONTAK : [email protected]
------------------------------
2.6 PrepareStatement
Selain Statement dalam JDBC kita juga mengenal PrepareStatement yang
gunanya hampir sama dengan Statement, namun perbedaannya
PrepareStatement memiliki fasilitas untuk mempermudah proses INSERT,
UPDATE, DELETE. Untuk membuat PrepareStatement kita bisa membuatnya
lewat Connection :
package usu.jdbc;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class PrepareStatementInsert {
Class.forName("com.mysql.jdbc.Driver").newInstance();
prepare.setInt(1, 200);
prepare.setString(2, "Usu");
final Calendar cal1 = Calendar.getInstance();
cal1.set(1980, Calendar.DECEMBER, 14);
prepare.setDate(3, new
Date(cal1.getTimeInMillis()));
prepare.setString(4, "Subang");
prepare.setString(5, "[email protected]");
prepare.executeUpdate();
prepare.setInt(1, 201);
prepare.setString(2, "Nesia");
final Calendar cal2 = Calendar.getInstance();
cal2.set(1910, Calendar.OCTOBER, 4);
prepare.setDate(3, new
Date(cal2.getTimeInMillis()));
prepare.setString(4, "Purwakarta");
prepare.setString(5, "[email protected]");
prepare.executeUpdate();
Setelah kode diatas di run, maka anda bisa melihat perubahannya dalam tabel
IDENTITAS :
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class PrepareStatementUpdate {
Class.forName("com.mysql.jdbc.Driver").newInstance();
prepare.setInt(1, 70);
prepare.setInt(2, 200);
prepare.executeUpdate();
prepare.setInt(1, 71);
prepare.setInt(2, 201);
prepare.executeUpdate();
Setelah anda menjalankan kode diatas, maka anda akan menemukan bahwa
record yang memiliki ID = 200 telah diganti menjadi 70 dan record yang memiliki
ID = 201 telah diganti menjadi 71 :
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class PrepareStatementDelete {
prepare.setInt(1, 71);
prepare.executeUpdate();
Dari kode diatas kita tahu bahwa kode diatas akan menghapus record yang
memiliki ID = 71 :
package usu.jdbc;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class PrepareStatementResult {
Class.forName("com.mysql.jdbc.Driver").newInstance();
ID : 10
NAMA : Eko Kurniawan
TANGGAL LAHIR : 1988-12-29
ALAMAT : Bandung
KONTAK : [email protected]
------------------------------
ID : 70
NAMA : Usu
TANGGAL LAHIR : 1980-12-14
ALAMAT : Subang
KONTAK : [email protected]
------------------------------
ID : 100
NAMA : Budi
TANGGAL LAHIR : 1982-05-17
ALAMAT : Bandung
KONTAK : [email protected]
------------------------------
ID : 101
NAMA : Sumarno
TANGGAL LAHIR : 1986-09-10
ALAMAT : Surabaya
KONTAK : [email protected]
------------------------------
ID : 102
NAMA : Tukiyem
TANGGAL LAHIR : 1978-10-10
ALAMAT : Semarang
KONTAK : [email protected]
------------------------------
ID : 103
NAMA : Sumarni
TANGGAL LAHIR : 1988-03-17
ALAMAT : Surabaya
KONTAK : [email protected]
------------------------------
ID : 104
NAMA : Rudi
TANGGAL LAHIR : 1986-07-10
ALAMAT : Bandung
KONTAK : [email protected]
------------------------------
ID : 105
NAMA : Friko
TANGGAL LAHIR : 1987-09-09
ALAMAT : Bogor
KONTAK : [email protected]
------------------------------
ID : 106
NAMA : Purwangga
TANGGAL LAHIR : 1988-08-09
ALAMAT : Subang
KONTAK : [email protected]
------------------------------
ID : 107
NAMA : Joko
TANGGAL LAHIR : 1987-10-10
ALAMAT : Cirebon
KONTAK : [email protected]
------------------------------
ID : 108
NAMA : Hisyam
TANGGAL LAHIR : 1988-01-01
ALAMAT : Depok
KONTAK : [email protected]
------------------------------
package usu.jdbc;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class AdvancedResultSetInsert {
Class.forName("com.mysql.jdbc.Driver").newInstance();
result.moveToInsertRow();
result.updateInt(1, 1);
result.updateString(2, "Nesia");
final Calendar cal = Calendar.getInstance();
cal.set(1988, Calendar.OCTOBER, 4);
result.updateDate(3, new
Date(cal.getTimeInMillis()));
result.updateString(4, "Kalijati");
result.updateString(5, "[email protected]");
result.insertRow();
Setelah menjalankan kode diatas, anda bisa melihat perubahannya dalam tabel
IDENTITAS :
Untuk mengubah data kita harus menentukan dulu record yang akan kita ubah
dengan metode absolute(int indexRecord) milik ResultSet. Dan seperti proses
INSERT untuk proses UPDATE kita juga menggunakan metode
update[TipeData](int indexAtribut, TipeData nilai) dan harus diakhiri dengan
metode updateRow(), misal :
package usu.jdbc;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class AdvancedResultSetUpdate {
Class.forName("com.mysql.jdbc.Driver").newInstance();
result.absolute(1);
result.updateInt(1, 2);
result.updateString(2, "Nesia");
final Calendar cal = Calendar.getInstance();
cal.set(1988, Calendar.OCTOBER, 4);
result.updateDate(3, new
Date(cal.getTimeInMillis()));
result.updateString(4, "Bandung");
result.updateString(5, "[email protected]");
result.updateRow();
package usu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author usu
*/
public class AdvancedResultSetDelete {
Class.forName("com.mysql.jdbc.Driver").newInstance();
result.absolute(1);
result.deleteRow();
Setelah kode diatas dijalankan, maka record ke-1 akan terhapus dalam database :