Rabu, 28 Mei 2008

Mengakses Database

Untuk mengakses database dengan Java cukup mudah. API Java yang perlu dipelajari ada dalam paket java.sql. Class-class yang berhubungan dengan mengakses database antara lain Connection, Statement, PreparedStatement dan ResultSet. Teknologi Java untuk mengakses database disebut JDBC. Dengan JDBC kita dapat menciptakan koneksi ke database, mengirimkan perintah-perintah sql dan memproses hasil eksekusi sql.

Hal lain yang dibutuhkan untuk mengakses database adalah JDBC Driver. JDBC Driver berbeda untuk setiap database yang ada. Misalnya JDBC Driver untuk MySQL akan berbeda dengan JDBC Driver untuk SQL Server atau Oracle.

Aplikasi database yang dikembangkan menggunakan teknologi Java tidak akan terikat dengan database yang digunakan. Maksudnya adalah kita dapat bergonta-ganti database engine dari yang satu ke database engine yang lain tanpa harus mengubah source program kita secara signifikan. Yang perlu diganti hanyalah JDBC Driver yang digunakan.

Berikut adalah beberapa contoh program Java sederhana untuk mengakses database MySQL. Sekali lagi untuk mengakses database MySQL dibutuhkan JDBC Driver MySQL. Silahkan download di sini

Membaca Data


/**
* @author Hendro Steven
*/
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
public class DatabaseApp{
public static void main(String args[]){
Connection conn = null;
Statement st = null;
ResultSet result=null;

String sql = "SELECT * FROM t_pegawai";

try{
//load Driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
//Define the Connection URL
String dbURL = "jdbc:mysql://localhost/db_training";
String dbUser = "";
String dbPass = "";
//Establish The Connection
conn = DriverManager.getConnection(dbURL,dbUser,dbPass);
//Create a statement object
st = conn.createStatement();
//Execute a query
result = st.executeQuery(sql);
//Process the results
System.out.println("Database Result :");
while(result.next()){
String kode = result.getString(1);
String nama = result.getString(2);
String alamat = result.getString(3);
String gaji = result.getString(4);
System.out.println("KODE : "+ kode);
System.out.println("NAMA : "+ nama);
System.out.println("ALAMAT : "+ alamat);
System.out.println("GAJI : "+ gaji);
System.out.println();
}
//close the connection
st.close();
conn.close();
}catch (InstantiationException e) {
System.out.println("InstantiationException....");
System.out.println(e.getMessage());
}catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException....");
System.out.println(e.getMessage());
}catch (IllegalAccessException e) {
System.out.println("IllegalAccessException....");
System.out.println(e.getMessage());
}catch (SQLException e) {
System.out.println("SQLException....");
System.out.println(e.getMessage());
}
}
}

Menambah Data

/**
* @author Hendro Steven SalatigaCamp
*/
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.*;

public class AddDataApp{
public static void main(String args[]){
Connection conn = null;
Statement st = null;
ResultSet result=null;

String sql = "";
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

try{
//load Driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
//Define the Connection URL
String dbURL = "jdbc:mysql://localhost/db_training";
String dbUser = "";
String dbPass = "";
//Establish The Connection
conn = DriverManager.getConnection(dbURL,dbUser,dbPass);
//Create a statement object
st = conn.createStatement();

//ambil input dari console
System.out.println("Input Data");
System.out.print("KODE : "); String kode = input.readLine();
System.out.print("NAMA : "); String nama = input.readLine();
System.out.print("ALAMAT : "); String alamat = input.readLine();
System.out.print("GAJI :"); double gaji = Double.parseDouble(input.readLine());
sql = "INSERT INTO t_pegawai VALUES('"+kode+"','"+nama+"','"+alamat+"',"+gaji+")";

//Execute a query
st.executeUpdate(sql);
System.out.println("Completed...");

//close the connection
st.close();
conn.close();
}catch (InstantiationException e) {
System.out.println("InstantiationException....");
System.out.println(e.getMessage());
}catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException....");
System.out.println(e.getMessage());
}catch (IllegalAccessException e) {
System.out.println("IllegalAccessException....");
System.out.println(e.getMessage());
}catch (SQLException e) {
System.out.println("SQLException....");
System.out.println(e.getMessage());
}catch (IOException e){
System.out.println("IOException....");
System.out.println(e.getMessage());
}
}
}

Menghapus Data

/**
* @author Hendro Steven SalatigaCamp
*/
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.*;

public class DelDataApp{
public static void main(String args[]){
Connection conn = null;
Statement st = null;
ResultSet result=null;

String sql = "";
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

try{
//load Driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
//Define the Connection URL
String dbURL = "jdbc:mysql://localhost/db_training";
String dbUser = "";
String dbPass = "";
//Establish The Connection
conn = DriverManager.getConnection(dbURL,dbUser,dbPass);
//Create a statement object
st = conn.createStatement();

//ambil input dari console
System.out.println("Input Kode Yang akan dihapus :");
System.out.print("KODE : "); String kode = input.readLine();
sql = "DELETE FROM t_pegawai WHERE kode='"+kode+"'";

//Execute a query
st.executeUpdate(sql);
System.out.println("Completed...");

//close the connection
st.close();
conn.close();
}catch (InstantiationException e) {
System.out.println("InstantiationException....");
System.out.println(e.getMessage());
}catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException....");
System.out.println(e.getMessage());
}catch (IllegalAccessException e) {
System.out.println("IllegalAccessException....");
System.out.println(e.getMessage());
}catch (SQLException e) {
System.out.println("SQLException....");
System.out.println(e.getMessage());
}catch (IOException e){
System.out.println("IOException....");
System.out.println(e.getMessage());
}
}
}

5 komentar:

Hastari utama mengatakan...

Aku mw nanya nih klu pk PrepareStatement sama statement bedanya apa ?

Anonim mengatakan...

kalo misalkan kita pake MSSQL kodenya query-nya bagaimnana ya...?

Sinau Java mengatakan...

Hallo hanx,
JDBC itu adalah standart jadi databasenya digonta ganti sqlnya tetap sama. Asalkan jangan menggunakan perintah sql yang hanya ada di database tertentu. Misalnya di mysql ada perintah limit untuk membatasi jumlah record yang dibaca. Nah perintah ini gak ada di mssql karena itu pasti gak jalan. Kalo kita ganti database enginenya yang berubah dari source code kita adalah bagian load driver dan url databasenya aja
Class.forName("com.mysql.jdbc.Driver").newInstance();
//Define the Connection URL
String dbURL = "jdbc:mysql://localhost/db_training";
Ini bisa dibaca didokumentasi jdbc database yang digunakan. Selain itu jdbc connectornya juga harus disesuaikan kalo mysql kita gunakan mysq connector nah kalo mmsql tentunya beda lagi.

Sinau Java mengatakan...

Hallo Hastari..
PrepareStatement sebaiknya digunakan untuk query yang akan dieksekusi berkali kali dengan value yang berbeda misalnya eksekusi dalam perulangan. Sedangkan Statement lebih cocok untuk query yang hanya dieksekusi sekali aja. Biar lebih jelas bisa diliat dilink berikut:
http://www.xnote.com/forums/viewthread.php?tid=13

Anonim mengatakan...

Kalau sebelum Insert kita butuh verifikasi terlebih dahulu, misal kode tersebut sudah ada atau belum, bagaimana?kalau sudah ada inginnya ditampilkan di JForm dan kalau belum baru insert.

Thx Mas