0% menganggap dokumen ini bermanfaat (0 suara)
153 tayangan6 halaman

Modul 8 Praktikum PBO

Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
153 tayangan6 halaman

Modul 8 Praktikum PBO

Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 6

Modul 8 Pemrograman Berbasis Obyek

Pengaksesan Basis Data (MariaDB)

8.1. Tujuan
Setelah mengiku� pra�kum ini, mahasiswa diharapkan dapat:
1. Memahami konsep JDBC Statement dan JDBC ResultSet.
3. Mampu mengimplementasikan proses SQL Statement dengan JDBC.

8.2. Alat dan Bahan


Alat & Bahan Yang digunakan adalah hardware perangkat PC beserta Kelengkapannya berjumlah 40
PC serta So�ware Apache Netbeans yang telah terinstall pada masing-masing PC.

8.3. Dasar Teori


Java Database Connec�vity (JDBC) merupakan applica�on programming interface (API) untuk bahasa
pemrograman Java yang mendefenisikan bagaimana client mengakses database. JDBC menyediakan
method untuk melakukan query pada database, dan berorientasi ke database rela�onal. JDBC
connec�ons support untuk membuat dan mengeksekusi SQL statements seper� CREATE, INSERT,
UPDATE, DELETE, atau SELECT.

8.3.1. JDBC Statement


Untuk merepresentasikan SQL Statement, JDBC menyediakan sebuah interface “statement”.
Terdapat 3 statement, yaitu:
• Statement: digunakan untuk meng-implement SQL statements sederhana tanpa parameters.
• PreparedStatement: meng-extends Statement. Digunakan untuk SQL statements yang
mungkin memiliki input parameters.
• CallableStatement: meng-extends Statement. Digunakan untuk mengeksekusi stored
procedures yang berkemungkinan mengandung input & output parameter.

8.3.2. JDBC ResultSet


Query statements mengembalikan JDBC row result set (ResultSet). Hasil ini dapat dikatakan
sebagai “�pe data tabel” yang dihasilkan query SELECT yang terdiri dari baris dan kolom. Hasil ini
berisi value dari tabel yang dihasilkan dan juga metadata dari tabel tersebut.

8.3.3. JDBC Eksekusi Query


Untuk mengeksekusi query, panggil salah satu method berikut dari interface statement:
• execute: mengembalikan “true” jika objek hasil query adalah objek ResultSet. Gunakan
method ini jika query dapat mengembalikan 1 atau lebih ResultSet.
• executeQuery: mengembalikan sebuah objek ResultSet.

Modul Pra�kum PBO 1


• executeUpdate: mengembalikan nilai integer yang memperlihatkan jumlah baris yang
terpengeruh hasil query. Contoh, jika ada sebuah baris ditambahkan ke tabel, eksekusi
executeUpdate mengembalikan nilai 1.

8.3.4. Preconfigure (tips)


Berikut ini adalah preconfigure (�ps) sebelum memulai proyek:
1. Pas�kan sudah mendownload JDBC untuk MySQL/MariaDB.
2. Gunakan dedicated folder untuk menyimpan libraries pada saat pembentukan project.

3. Import libraries ke dalam project IDE yang digunakan.

8.3.5. Memproses SQL Statement


Secara umum, untuk memperoses SQL statement menggunakan JDBC, berikut langkah-langkah
yang dilakukan:
1. Establishing Connec�on
Langkah ini dimaksudkan untuk membangun koneksi agar basis data dapat diakses. Ada 2 cara
untuk melakukannya, yaitu menggunakan DriverManager dan DataSource. Untuk contoh yang
simple, DriverManager sering digunakan. Sedangkan untuk cara yang direkomendasikan
Oracle adalah dengan menggunakan DataSource.

Modul Pra�kum PBO 2


Sebelum establish connec�on di kode Java, pas�kan database untuk diakses tersedia. Untuk
demo, terdapat database local dengan info berikut:
Jenis DB: MariaDB/MySQL (com.mysql.jdbc.Driver)
Nama DB: demo_pbo (jdbc:mysql://localhost:3306/demo_pbo)
Username DB: root
Password DB:

Objek MysqlDataSource
DB_URL=“jdbc:mysql://localhost:3306/demo_pbo” DB_USERNAME=“root”
DB_PASSWORD= “”

Cat: info di atas,


sesuaikan dengan
informasi
database masing-
masing yang
digunakan

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class BuatKoneksi {


public static void main(String[] args) {
MysqlDataSource dataSource = new MysqlDataSource();
String DB_URL = "jdbc:mysql://localhost:3306/demo_pbo";
String DB_USERNAME = "root";
String DB_PASSWORD = "";

dataSource.setUrl(DB_URL);
datasource.setUser(DB_USERNAME);
dataSource.setPassword(DB_PASSWORD);

try {
Connection conn dataSource.getConnection();
System.out.println("Koneksi berhasil");
} catch (SQLException ex) {
System.out.println("Eksepsi akses data: " +
ex.getMessage());
}
}
}

Modul Pra�kum PBO 3


Jika output yang muncul: “Eksepsi akses data: The server time zone value 'unknown' is
unrecognized or represents more than one time zone…..” gan� url jadi
jdbc:mysql://localhost:3306/demo_pbo?serverTimezone=Asia/Jakarta

2. Membuat Statement (PreparedStatement)


Objek PreparedStatement didapat dari pemanggilan prepareStatement dari objek
Connec�on. Query statement yang diberikan dapat mengandung “?”. Hal ini akan diisi
belakangan menurut keinginan programmer/keinginan pengguna. Isi “?” melalui objek
prepared statement.

3. Eksekusi Query
Eksekusi query menggunakan method execute yang telah dituliskan sebelumnya.
Kali ini, fokus pada:
• executeQuery: mengeksekusi SELECT.
• executeUpdate: mengeksekusi INSERT, UPDATE, DELETE.

4. Proses Hasil Eksekusi


Memproses hasil eksekusi tergantung nilai yang dikembalikan. Jika mengeksekusi dengan
executeUpdate, cek jumlah rowAffected, lalu tampilkan hasilnya ke layar. Jika mengeksekusi
dengan executeQuery, tampilkan nilai ResultSet dengan perulangan.

5. Close Connec�on
Tutup objek koneksi (Connec�on) dengan memanggil method close().
Di bawah ini merupakan contoh kode lengkap dari langkah 1-5 di atas (Menggunakan
executeUpdate dan executeQuery):
import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class BuatStatement {


public static void main(String[] args) {
MysqlDataSource dataSource = new MysqlDataSource();
String DB_URL =
"jdbc:mysql://localhost:3306/demo_pbo?serverTimezone=Asia/Jakarta";
String DB_USERNAME = "root";
String DB_PASSWORD = "";

dataSource.setUrl(DB_URL);
datasource.setUser(DB_USERNAME);
dataSource.setPassword(DB_PASSWORD);

try {
Connection conn = datasource.getConnection();
String kueriInsert = "INSERT INTO makanan (nama,
harga,kategori) VALUES (?,?,?)";
//langkah 2
PreparedStatement ps = conn.prepareStatement

Modul Pra�kum PBO 4


(kueriInsert);
ps.setString(1, "Cilok");
ps.setInt(2, 5000);
ps.setString(3, "cemilan");
//langkah 3
int rowAffected ps.executeUpdate(); //executeUpdate
//langkah 4
if(rowAffected>0) {
System.out.println("Insert data berhasil");
}
//langkah 5
ps.close(); conn.close();

} catch (SQLException ex) {


System.out.println("Eksepsi akses data: " +
ex.getMessage());
}
}
}

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class BuatStatementDua {


public static void main(String[] args) {
MysqlDataSource dataSource = new MysqlDataSource();
String DB_URL =
"jdbc:mysql://localhost:3306/demo_pbo?serverTimezone=Asia/Jakarta";
String DB_USERNAME = "root";
String DB_PASSWORD = "";

dataSource.setUrl(DB_URL);
datasource.setUser(DB_USERNAME);
dataSource.setPassword(DB_PASSWORD);

try {
Connection conn = datasource.getConnection();
String kueriInsert = "SELECT nama, harga from Makanan
Where kategori = ?";
//langkah 2
PreparedStatement ps = conn.prepareStatement
(kueriInsert);
ps.setString(1, "cemilan");
//langkah 3
ResultSet rs = ps.executeQuery(); //executeQuery
//langkah 4
while(rs.next()) {
String nama = rs.getString("nama");
int harga = rs.getInt("harga");
System.out.println("Nama: "+nama+" dengan harga
"+harga);
}

Modul Pra�kum PBO 5


//langkah 5
rs.close();
ps.close(); conn.close();

} catch (SQLException ex) {


System.out.println("Eksepsi akses data: " +
ex.getMessage());
}
}
}

Catatan!
Pengaksesan database pada contoh ini merupakan bentuk yang paling sederhana. Sebaiknya,
pengaksesan database menggunakan mul�threading (materi thread ada di topik selanjutnya
setelah GUI). Pengaksesan database ini biasanya digunakan dengan membentuk satu kelas
sendiri bernama Koneksi dan input pengguna membentuk objek POJO sebelum di-insert ke
database.

Referensi
• htps://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html
• htps://docs.oracle.com/javase/tutorial/jdbc/basics/connec�ng.html
• htps://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html
• htps://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html
• htps://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
• htps://www.boraji.com/jdbc-how-to-get-connec�on-from-datasource-example

Modul Pra�kum PBO 6

Anda mungkin juga menyukai