ngodingdulu

Koneksi dan CRUD MySQL di MATLAB

Oleh Afa HernandesDiperbarui 5 menit baca

Daftar isi

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:

  1. Menyiapkan database dan driver JDBC MySQL
  2. Membuat fungsi koneksi
  3. CRUD: Create, Read, Update, Delete data pasien
  4. Menampilkan data di tabel GUI

Catatan pembaruan: versi lama artikel ini memakai MySQL Connector/J 3.1 dan mengedit classpath.txt di 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 database di 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):

db_poliklinik.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.

  1. Unduh dari dev.mysql.com/downloads/connector/j. Pilih Platform Independent, lalu unduh file ZIP-nya.
  2. Ekstrak, lalu salin file mysql-connector-j-<versi>.jar ke folder yang mudah diingat, misalnya C:\matlab-drivers\.
  3. Di Command Window MATLAB, ketik prefdir lalu tekan Enter. Perintah ini menampilkan folder preferensi MATLAB Anda.
  4. Di folder tersebut, buat file teks bernama javaclasspath.txt dan isi dengan path lengkap file JAR:
javaclasspath.txt (di folder prefdir)
C:\matlab-drivers\mysql-connector-j-9.1.0.jar
  1. 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:

koneksi.m
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);
end
end

Tiga argumen pertama adalah nama database, username, dan password. Uji koneksinya:

Command Window
>> conn = koneksi();
>> isopen(conn)
ans =
logical
1

Nilai 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.

tambah_pasien.m
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:

Command Window
>> 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:

cari_pasien.m
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

ubah_pasien.m
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

hapus_pasien.m
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:

Desain GUI MATLAB form Data Pasien dengan isian kode, nama, kategori, tanggal lahir, jenis kelamin, tombol aksi, dan tabel data

GUI GUIDE (komponen uitable dengan tag myTabel), misalnya di fungsi OpeningFcn atau setelah tombol Simpan ditekan:

pasien.m (GUIDE)
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 Designer
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.

Bagikan:WhatsAppTelegramXFacebook
Source Code Login GUI MATLAB dengan MySQL
MATLABSource Code

Source Code Login GUI MATLAB dengan MySQL

Berikut adalah Source code login Matlab yang bisa digunakan sebagai referensi. pilih salah satu yang paling mudah. membuat source code login matlab menggunakan gui

29 Desember 20211 mnt

Operasi Matriks Menggunakan GUI MATLAB
MATLABTutorial

Operasi Matriks Menggunakan GUI MATLAB

Lanjutan dari operasi hitung matriks pada post sebelumnya yaitu Operasi Matriks Pada Matlab, Sekarang kita akan membuat Desain GUI untuk Operasi Matriks

3 Februari 20212 mnt

Enter bukaEsc tutupHalaman pencarian