Koneksi dan CRUD MySQL di MATLAB
Oleh Afa HernandesDiperbarui 5 menit baca
Daftar isi
- Persiapan
- Langkah 1: Buat database dan tabel
- Langkah 2: Pasang driver JDBC MySQL
- Langkah 3: Fungsi koneksi
- Langkah 4: CRUD data pasien
- Create: menambah data
- Read: membaca data
- Mencari data dengan aman (prepared statement)
- Update: mengubah data
- Delete: menghapus data
- Langkah 5: Menampilkan data di GUI
- Error yang sering muncul
- Pertanyaan yang sering diajukan
- Kesimpulan
MATLAB tidak hanya untuk perhitungan matematis. Dengan Database Toolbox, MATLAB bisa membaca dan menyimpan data langsung ke MySQL. Ini berguna untuk aplikasi seperti sistem informasi pasien, pengolahan data hasil penelitian, atau GUI yang datanya harus tersimpan permanen.
Tutorial ini membahas:
- Menyiapkan database dan driver JDBC MySQL
- Membuat fungsi koneksi
- CRUD: Create, Read, Update, Delete data pasien
- Menampilkan data di tabel GUI
Catatan pembaruan: versi lama artikel ini memakai MySQL Connector/J 3.1 dan mengedit
classpath.txtdi folder instalasi MATLAB R2010a. Driver tersebut tidak kompatibel dengan MySQL 8, dan cara mengedit file instalasi sudah tidak dianjurkan. Langkah di bawah memakai cara yang direkomendasikan MATLAB versi sekarang.
Persiapan
- MATLAB dengan Database Toolbox. Periksa dengan perintah
ver databasedi Command Window. Database Toolbox adalah add-on berbayar. Lisensi kampus biasanya sudah menyertakannya. - MySQL atau MariaDB yang sedang berjalan, misalnya dari XAMPP.
Langkah 1: Buat database dan tabel
Jalankan SQL berikut di phpMyAdmin (tab SQL):
CREATE DATABASE IF NOT EXISTS db_poliklinik;USE db_poliklinik;
CREATE TABLE IF NOT EXISTS data_pasien ( kode_pasien VARCHAR(10) NOT NULL PRIMARY KEY, nama_pasien VARCHAR(100) NOT NULL, jenis_kelamin VARCHAR(10), tanggal_lahir DATE, alamat VARCHAR(255));Langkah 2: Pasang driver JDBC MySQL
MATLAB berkomunikasi dengan MySQL lewat driver JDBC bernama MySQL Connector/J.
- Unduh dari dev.mysql.com/downloads/connector/j. Pilih Platform Independent, lalu unduh file ZIP-nya.
- Ekstrak, lalu salin file
mysql-connector-j-<versi>.jarke folder yang mudah diingat, misalnyaC:\matlab-drivers\. - Di Command Window MATLAB, ketik
prefdirlalu tekan Enter. Perintah ini menampilkan folder preferensi MATLAB Anda. - Di folder tersebut, buat file teks bernama
javaclasspath.txtdan isi dengan path lengkap file JAR:
C:\matlab-drivers\mysql-connector-j-9.1.0.jar- Tutup lalu buka ulang MATLAB. Driver baru terbaca saat MATLAB dimulai.
Sesuaikan nama file dengan versi yang Anda unduh. Untuk mencoba cepat tanpa restart, Anda bisa memakai javaaddpath('C:\matlab-drivers\mysql-connector-j-9.1.0.jar'), tetapi cara ini hanya berlaku sampai MATLAB ditutup.
Langkah 3: Fungsi koneksi
Buat file koneksi.m agar koneksi cukup ditulis di satu tempat:
function conn = koneksi()%KONEKSI Membuka koneksi ke database MySQL db_poliklinik.conn = database('db_poliklinik', 'root', '', ... 'Vendor', 'MySQL', ... 'Server', 'localhost', ... 'PortNumber', 3306);
if ~isempty(conn.Message) error('Koneksi gagal: %s', conn.Message);endendTiga argumen pertama adalah nama database, username, dan password. Uji koneksinya:
>> conn = koneksi();>> isopen(conn)ans = logical 1Nilai 1 berarti koneksi berhasil.
Langkah 4: CRUD data pasien
Create: menambah data
Cara termudah adalah sqlwrite, yang menyimpan isi sebuah table MATLAB ke tabel MySQL. Nama kolom di table MATLAB harus sama dengan nama kolom di database.
conn = koneksi();
pasienBaru = table( ... ["PSN001"; "PSN002"], ... ["Budi Santoso"; "Siti Aminah"], ... ["Laki-laki"; "Perempuan"], ... [datetime(2001,5,17); datetime(1998,11,2)], ... ["Bandar Lampung"; "Metro"], ... 'VariableNames', {'kode_pasien','nama_pasien','jenis_kelamin','tanggal_lahir','alamat'});
sqlwrite(conn, 'data_pasien', pasienBaru);close(conn);Read: membaca data
fetch menjalankan query SELECT dan mengembalikan hasilnya sebagai table:
>> conn = koneksi();>> pasien = fetch(conn, 'SELECT * FROM data_pasien ORDER BY kode_pasien')pasien = 2×5 table kode_pasien nama_pasien jenis_kelamin tanggal_lahir alamat ___________ ______________ _____________ _____________ ________________ "PSN001" "Budi Santoso" "Laki-laki" 2001-05-17 "Bandar Lampung" "PSN002" "Siti Aminah" "Perempuan" 1998-11-02 "Metro"Kolomnya bisa diakses seperti table biasa, misalnya pasien.nama_pasien atau height(pasien) untuk jumlah baris.
Mencari data dengan aman (prepared statement)
Jika query memakai input dari pengguna, misalnya dari kotak pencarian di GUI, jangan menyambung teks langsung ke query. Gunakan prepared statement agar aman dari SQL injection:
conn = koneksi();kataKunci = "Budi"; % misalnya dari get(handles.edCari, 'String')
pstmt = databasePreparedStatement(conn, ... "SELECT * FROM data_pasien WHERE nama_pasien LIKE ?");pstmt = bindParamValues(pstmt, 1, "%" + kataKunci + "%");hasil = fetch(conn, pstmt);
close(pstmt);close(conn);Update: mengubah data
conn = koneksi();
pstmt = databasePreparedStatement(conn, ... "UPDATE data_pasien SET alamat = ? WHERE kode_pasien = ?");pstmt = bindParamValues(pstmt, [1 2], {"Pringsewu", "PSN002"});execute(conn, pstmt);
close(pstmt);close(conn);Angka [1 2] menunjukkan urutan tanda tanya (?) di query, dan nilainya diberikan dalam cell array dengan urutan yang sama.
Delete: menghapus data
conn = koneksi();
pstmt = databasePreparedStatement(conn, ... "DELETE FROM data_pasien WHERE kode_pasien = ?");pstmt = bindParamValues(pstmt, 1, "PSN001");execute(conn, pstmt);
close(pstmt);close(conn);Selalu tutup koneksi dengan close(conn) setelah selesai. Koneksi yang dibiarkan terbuka akan menumpuk dan suatu saat ditolak oleh server MySQL.
Langkah 5: Menampilkan data di GUI
Pada GUI, data biasanya ditampilkan di komponen tabel. Berikut contoh desain form Data Pasien dengan tabel di bagian bawah:

GUI GUIDE (komponen uitable dengan tag myTabel), misalnya di fungsi OpeningFcn atau setelah tombol Simpan ditekan:
conn = koneksi();pasien = fetch(conn, 'SELECT * FROM data_pasien ORDER BY kode_pasien');close(conn);
set(handles.myTabel, ... 'Data', table2cell(pasien), ... 'ColumnName', pasien.Properties.VariableNames);set(handles.txtTotal, 'String', sprintf('Total %d data', height(pasien)));App Designer (komponen UITable) bisa langsung menerima table:
app.UITable.Data = pasien;Untuk membuat GUI dari awal, ikuti seri Belajar MATLAB dari Dasar, atau lihat contoh lengkap di Source Code Login GUI MATLAB dengan MySQL.
Error yang sering muncul
Unable to find JDBC driver. MATLAB belum membaca file JAR. Pastikan javaclasspath.txt ada di folder yang ditampilkan prefdir, path JAR di dalamnya benar, lalu restart MATLAB.
Communications link failure. MATLAB tidak bisa menjangkau server MySQL. Pastikan MySQL sudah berjalan (tombol Start di XAMPP), serta host dan port (3306) sudah benar.
Access denied for user 'root'@'localhost'. Username atau password salah. Sesuaikan argumen kedua dan ketiga di database().
Undefined function 'database'. Database Toolbox belum terinstal atau tidak termasuk dalam lisensi Anda. Periksa dengan ver database.
Data tanggal tersimpan salah atau error saat sqlwrite. Pastikan kolom tanggal di table MATLAB bertipe datetime dan kolom di MySQL bertipe DATE.
Pertanyaan yang sering diajukan
Apakah bisa tanpa Database Toolbox? Database Toolbox adalah cara resmi dan paling mudah. Alternatifnya adalah memanggil class JDBC Java langsung dari MATLAB, tetapi kodenya jauh lebih panjang dan rawan kesalahan. Jika tidak punya lisensi, pertimbangkan mengolah datanya dengan Python atau PHP.
Apakah koneksi ini bisa dipakai di GNU Octave?
Tidak. Fungsi database, fetch, dan sqlwrite hanya ada di Database Toolbox MATLAB.
Kesimpulan
Koneksi MATLAB ke MySQL butuh tiga hal: Database Toolbox, driver Connector/J yang didaftarkan lewat javaclasspath.txt, dan fungsi database(). Setelah terhubung, gunakan fetch untuk membaca, sqlwrite untuk menambah, dan prepared statement + execute untuk mengubah atau menghapus data. Jangan lupa menutup koneksi setelah selesai.



