Tutorial Java JDBC CRUD
Tutorial Java JDBC CRUD: Contoh Sisipkan, Pilih, Perbarui, dan Hapus SQL
1. Prasyarat
Untuk memulai, pastikan Anda menginstal perangkat lunak berikut di komputer Anda:- JDK ( unduh JDK 7 ).
- MySQL ( unduh MySQL Community Server 5.6.12 ). Anda mungkin juga ingin mengunduh MySQL Workbench - alat grafis untuk bekerja dengan database MySQL.
- Driver JDBC untuk MySQL ( unduh MySQL Connector/J 5.1.25 ). Ekstrak arsip zip dan letakkan file mysql-connector-java-VERSION-bin.jar ke classpath (di folder yang sama dengan file sumber Java Anda).
2. Membuat contoh database MySQL
Mari buat database MySQL bernama SampleDB dengan satu tabel Pengguna dengan struktur berikut:Jalankan skrip SQL berikut di dalam MySQL Workbench:1 2 3 4 5 6 7 8 9 10 11 12 | create database SampleDB; use SampleDB; CREATE TABLE `users` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(45) NOT NULL, `password` varchar(45) NOT NULL, `fullname` varchar(45) NOT NULL, `email` varchar(45) NOT NULL, PRIMARY KEY (`user_id`) ); |
sumber Path\To\The\Script\File\SQLScript.sql
Berikut adalah contoh tangkapan layar yang diambil saat menjalankan skrip di atas dalam program MySQL Command Line Client :
3. Memahami antarmuka dan kelas utama JDBC
Mari kita lihat ikhtisar antarmuka dan kelas utama JDBC yang biasa kita gunakan untuk bekerja. Semuanya tersedia di bawah paket java.sql :- DriverManager : kelas ini digunakan untuk mendaftarkan driver untuk tipe database tertentu (misalnya MySQL dalam tutorial ini) dan untuk membuat koneksi database dengan server melaluimetode getConnection() .
- Koneksi : antarmuka ini mewakili koneksi (sesi) basis data yang dibuat dari mana kita dapat membuat pernyataan untuk mengeksekusi kueri dan mengambil hasil, mendapatkan metadata tentang basis data, menutup koneksi, dll.
- Statement dan PreparedStatement : interface ini masing-masing digunakan untuk mengeksekusi query SQL statis dan query SQL berparameter. Pernyataanadalah antarmuka super dari antarmukaPreparedStatement. Metode yang biasa mereka gunakan adalah:
- boolean execution(String sql) : mengeksekusi pernyataan SQL umum. Ini mengembalikantruejika kueri mengembalikanResultSet,salahjika kueri mengembalikan jumlah pembaruan atau tidak mengembalikan apa pun. Metode ini hanya dapat digunakan denganPernyataan.
- int executionUpdate(String sql) : mengeksekusi pernyataan INSERT, UPDATE atau DELETE dan mengembalikan akun pembaruan yang menunjukkan jumlah baris yang terpengaruh (misalnya 1 baris dimasukkan, atau 2 baris diperbarui, atau 0 baris terpengaruh).
- ResultSet executionQuery(String sql) : mengeksekusi pernyataan SELECT dan mengembalikanResultSetyang berisi hasil yang dikembalikan oleh kueri.
Pernyataan yang disiapkan adalah pernyataan yang berisi placeholder (dalam bentuk tanda tanya ?) untuk nilai dinamis yang akan ditetapkan saat runtime. Sebagai contoh:
PILIH * dari Pengguna MANA user_id=?
Di sini nilai user_id adalah parameter dengan tanda tanya dan akan ditetapkan oleh salah satu metode setXXX() dari antarmuka PreparedStatement , misalnya setInt(int index, int value) .
- ResultSet : berisi data tabel yang dikembalikan oleh kueri SELECT. Gunakan objek ini untuk mengulangi baris dalam set hasil menggunakan metode next() , dan dapatkan nilai kolom di baris saat ini menggunakan metode getXXX() (mis . getString() , getInt() , getFloat() dan seterusnya). Nilai kolom dapat diambil dengan nomor indeks (berbasis 1) atau dengan nama kolom.
- SQLException : pengecualian yang diperiksa ini dideklarasikan untuk dilemparkan oleh semua metode di atas, jadi kita harus menangkap pengecualian ini secara eksplisit saat memanggil metode kelas di atas.
4. Menghubungkan ke database
Misalkan server database MySQL mendengarkan pada port default 3306 di localhost . Cuplikan kode berikut terhubung ke nama database SampleDB oleh user root dan password secret :1 2 3 4 5 6 7 8 9 10 11 12 13 14 | String dbURL = "jdbc:mysql://localhost:3306/sampledb" ; String username = "root" ; String password = "secret" ; try { Connection conn = DriverManager.getConnection(dbURL, username, password); if (conn != null ) { System.out.println( "Connected" ); } } catch (SQLException ex) { ex.printStackTrace(); } |
1 | conn.close(); |
1 2 3 4 5 6 7 | try (Connection conn = DriverManager.getConnection(dbURL, username, password)) { // code to execute SQL queries goes here... } catch (SQLException ex) { ex.printStackTrace(); } |
5. JDBC Jalankan Contoh Pernyataan INSERT
Mari tulis kode untuk menyisipkan record baru ke dalam tabel Users dengan detail sebagai berikut:- nama pengguna: bill
- kata sandi: secretpass
- nama lengkap: Bill Gates
- email: bill.gates@microsoft.com
1 2 3 4 5 6 7 8 9 10 11 12 | String sql = "INSERT INTO Users (username, password, fullname, email) VALUES (?, ?, ?, ?)" ; PreparedStatement statement = conn.prepareStatement(sql); statement.setString( 1 , "bill" ); statement.setString( 2 , "secretpass" ); statement.setString( 3 , "Bill Gates" ); statement.setString( 4 , "bill.gates@microsoft.com" ); int rowsInserted = statement.executeUpdate(); if (rowsInserted > 0 ) { System.out.println( "A new user was inserted successfully!" ); } |
- setBoolean(int parameterIndex, boolean x)
- setDate(int parameterIndex, Tanggal x)
- setFloat(int parameterIndex, float x)
- …
6. JDBC Jalankan Contoh Pernyataan SELECT
Cuplikan kode berikut mengkueri semua catatan dari tabel Pengguna dan mencetak detail untuk setiap catatan:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | String sql = "SELECT * FROM Users" ; Statement statement = conn.createStatement(); ResultSet result = statement.executeQuery(sql); int count = 0 ; while (result.next()){ String name = result.getString( 2 ); String pass = result.getString( 3 ); String fullname = result.getString( "fullname" ); String email = result.getString( "email" ); String output = "User #%d: %s - %s - %s - %s" ; System.out.println(String.format(output, ++count, name, pass, fullname, email)); } |
Pengguna #1: bill - secretpass - Bill Gates - bill.gates@microsoft.com
Karena kueri SQL SELECT di sini bersifat statis jadi kami hanya membuat objek Pernyataan dari koneksi. Perulangan while mengulangi baris-baris yang terdapat dalam set hasil dengan berulang kali memeriksa nilai kembalian dari metode next() dari ResultSet . Metode next() menggerakkan kursor ke depan dalam kumpulan hasil untuk memeriksa apakah ada catatan yang tersisa. Untuk setiap iterasi, kumpulan hasil berisi data untuk baris saat ini, dan kami menggunakan metode getXXX (indeks kolom/nama kolom) dari ResultSet untuk mengambil nilai kolom tertentu di baris saat ini, misalnya pernyataan ini:1 | String name = result.getString( 2 ); |
1 | String fullname = result.getString( "fullname" ); |
- getString()
- getInt()
- getFloat()
- getDate()
- getTimestamp()
- …
7. Contoh Pernyataan UPDATE Pelaksana JDBC
Cuplikan kode berikut akan memperbarui catatan "Bill Gates" seperti yang kami masukkan sebelumnya:1 2 3 4 5 6 7 8 9 10 11 12 | String sql = "UPDATE Users SET password=?, fullname=?, email=? WHERE username=?" ; PreparedStatement statement = conn.prepareStatement(sql); statement.setString( 1 , "123456789" ); statement.setString( 2 , "William Henry Bill Gates" ); statement.setString( 3 , "bill.gates@microsoft.com" ); statement.setString( 4 , "bill" ); int rowsUpdated = statement.executeUpdate(); if (rowsUpdated > 0 ) { System.out.println( "An existing user was updated successfully!" ); } |
8. JDBC Jalankan Contoh Pernyataan DELETE
Cuplikan kode berikut akan menghapus catatan yang bidang nama penggunanya berisi "tagihan":1 2 3 4 5 6 7 8 9 | String sql = "DELETE FROM Users WHERE username=?" ; PreparedStatement statement = conn.prepareStatement(sql); statement.setString( 1 , "bill" ); int rowsDeleted = statement.executeUpdate(); if (rowsDeleted > 0 ) { System.out.println( "A user was deleted successfully!" ); } |
- Menggunakan Pernyataan untuk kueri SQL statis.
- Menggunakan PreparedStatement untuk kueri SQL berparameter dan menggunakan metode setXXX() untuk menetapkan nilai parameter.
- Menggunakan metode execution() untuk mengeksekusi kueri umum.
- Menggunakan metode executionUpdate() untuk mengeksekusi kueri INSERT, UPDATE, atau DELETE
- Menggunakan metode executionQuery() untuk mengeksekusi kueri SELECT.
- Menggunakan ResultSet untuk mengulangi baris yang dikembalikan dari kueri SELECT, menggunakan metode next() untuk melanjutkan ke baris berikutnya dalam kumpulan hasil, dan menggunakan metode getXXX() untuk mengambil nilai kolom.
0 Response to "Tutorial Java JDBC CRUD"
Post a Comment