Dasar-Dasar JDBC
Koneksi, pernyataan, dan set hasil.
Dasar-Dasar JDBC adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
Apa Itu JDBC?
JDBC (Konektivitas Basis Data Java) adalah API standar untuk berkomunikasi dengan basis data relasional dari Java.
- JDBC berada dalam paket
java.sql. - Setiap basis data menyediakan pengandar yang mengimplementasikan antarmuka JDBC.
- Anda menulis kode berdasarkan antarmuka seperti
Connection,Statement, danResultSet— bukan berdasarkan kelas milik vendor secara langsung.
Abstraksi ini memungkinkan kode yang sama bekerja dengan PostgreSQL, MySQL, H2, atau Oracle.
Antarmuka Inti
Tiga antarmuka melakukan sebagian besar pekerjaan:
Connection— sesi terbuka dengan basis data.Statement/PreparedStatement— mengirim SQL.ResultSet— kursor atas baris yang dikembalikan oleh kueri.
Anda memperoleh Connection dari DriverManager atau DataSource.
Membuka Koneksi
DriverManager.getConnection(url, user, password) mengembalikan Connection yang aktif.
URL JDBC mengidentifikasi basis data, misalnya jdbc:postgresql://localhost:5432/shop. Pengandar modern mendaftarkan dirinya secara otomatis, sehingga Anda tidak perlu lagi memanggil Class.forName(...).
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/shop";
try (Connection conn = DriverManager.getConnection(url, "app", "secret")) {
System.out.println("Connected: " + !conn.isClosed());
} catch (SQLException e) {
System.out.println("Connection failed: " + e.getMessage());
}
}
}Blok Percobaan dengan Sumber Daya
Connection, Statement, dan ResultSet semuanya mengimplementasikan AutoCloseable.
Selalu buka semuanya di dalam blok percobaan dengan sumber daya agar semuanya tertutup secara otomatis — bahkan ketika terjadi pengecualian. Koneksi yang dibiarkan terbuka akan segera menghabiskan kapasitas basis data.
- Sumber daya ditutup dalam urutan terbalik.
- Blok
finallytidak diperlukan.
Menjalankan Kueri
Untuk SELECT sederhana, buat Statement dan panggil executeQuery, yang mengembalikan ResultSet.
Contoh ini menggunakan simulasi dalam memori agar Anda dapat melihat alurnya tanpa basis data nyata. Dalam produksi, SQL akan dijalankan terhadap koneksi tersebut.
import java.util.List;
public class Main {
public static void main(String[] args) {
// Simulated result of: SELECT name FROM users
List<String> names = List.of("Ada", "Linus", "Grace");
System.out.println("Query returned " + names.size() + " rows:");
for (String name : names) {
System.out.println(" - " + name);
}
}
}Membaca ResultSet
ResultSet dimulai sebelum baris pertama. Panggil rs.next() dalam perulangan; metode ini mengembalikan false ketika tidak ada lagi baris.
Baca kolom berdasarkan nama atau indeks yang dimulai dari 1 menggunakan pengambil bertipe:
rs.getInt("id")rs.getString("name")rs.getDouble("price")
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/shop";
try (Connection conn = DriverManager.getConnection(url, "app", "secret");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT id, name FROM users")) {
while (rs.next()) {
System.out.println(rs.getInt("id") + ": " + rs.getString("name"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}executeUpdate untuk Penulisan
Untuk INSERT, UPDATE, dan DELETE, gunakan executeUpdate. Metode ini mengembalikan int: jumlah baris yang terpengaruh.
Gunakan execute hanya ketika Anda belum mengetahui apakah pernyataan tersebut akan mengembalikan kumpulan hasil.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/shop";
try (Connection conn = DriverManager.getConnection(url, "app", "secret");
Statement st = conn.createStatement()) {
int rows = st.executeUpdate("DELETE FROM sessions WHERE expired = true");
System.out.println("Deleted " + rows + " rows");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}Memetakan Baris ke Objek
Sebagian besar aplikasi mengonversi setiap baris menjadi objek domain. Lakukan perulangan pada ResultSet dan buat instansnya.
Berikut polanya, disimulasikan agar dapat berjalan secara mandiri. Tipe data ini membuat pemetaan lebih ringkas.
import java.util.ArrayList;
import java.util.List;
public class Main {
record User(int id, String name) {}
public static void main(String[] args) {
// Stand-in for iterating a ResultSet
String[][] rows = {{"1", "Ada"}, {"2", "Linus"}};
List<User> users = new ArrayList<>();
for (String[] row : rows) {
users.add(new User(Integer.parseInt(row[0]), row[1]));
}
users.forEach(System.out::println);
}
}Menangani SQLException
Hampir setiap metode JDBC melempar pengecualian terperiksa SQLException.
Pengecualian ini membawa informasi diagnostik yang berguna:
getMessage()— teks yang dapat dibaca manusia.getSQLState()— kode status standar yang terdiri dari 5 karakter.getErrorCode()— kode khusus vendor.
Catat informasi ini, bukan mengabaikannya.
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
SQLException e = new SQLException("duplicate key", "23505", 7);
System.out.println("Message: " + e.getMessage());
System.out.println("SQLState: " + e.getSQLState());
System.out.println("ErrorCode: " + e.getErrorCode());
}
}DatabaseMetaData
conn.getMetaData() mengembalikan objek DatabaseMetaData yang menjelaskan basis data itu sendiri.
Objek ini dapat memberi tahu nama dan versi produk, fitur yang didukung, serta bahkan mencantumkan tabel dan kolom. Inilah cara alat seperti penjelajah skema bekerja tanpa menulis detail vendor secara khusus.
Menggabungkan Semuanya
Alur pembacaan yang umum:
- Buka
Connectiondalam blok percobaan dengan sumber daya. - Buat
Statement(atau yang lebih baik,PreparedStatement). - Panggil
executeQuerydan lakukan perulangan denganrs.next(). - Petakan kolom ke dalam objek.
- Biarkan blok percobaan dengan sumber daya menutup semuanya.
Dalam pelajaran berikutnya, kita akan membuat kueri yang aman dari injeksi.
Pemeriksaan Singkat
Apa yang dikembalikan oleh Statement.executeUpdate?
Ringkasan
Sekarang Anda mengetahui alur inti JDBC:
DriverManager.getConnectionmembukaConnection.Statementmengirim SQL;executeQuerymengembalikanResultSet, sedangkanexecuteUpdatemengembalikan jumlah baris yang terpengaruh.- Lakukan iterasi dengan
rs.next()dan pengambil bertipe. - Selalu gunakan blok percobaan dengan sumber daya, dan tangani
SQLExceptionbeserta status serta kode kesalahannya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Dasar-Dasar JDBC” gratis?
Ya — teks lengkap “Dasar-Dasar JDBC” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Dasar-Dasar JDBC”?
Koneksi, pernyataan, dan set hasil. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Dasar-Dasar JDBC” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar JDBC
- PreparedStatement
- Transaksi
- Pengumpulan Koneksi dengan HikariCP