Lama tidak ngeblog tidak enak juga. Banyak hal-hal yang bisa saya sharing ke orang lain yang siapa tahu membutuhkan informasi tertentu yang saya miliki. Terkadang sedih juga membaca komentar-komentar di tulisan saya yang mengatakan “sotoy”, jangan asal tulis, dan lain-lain, bahkan ada yang mengatakan saya asal “copas”. Tapi sesuai dengan prinsip situs saya “just a Little Kindness”, saya coba untuk memberi kebaikan walau hanya sedikit.
Saya dulu pernah membuat tulisan mengenai akses database dengan Visual Query Builder, dan banyak yang tidak puas dengan koneksi seperti itu. Lama saya tidak mencoba “ngoprek” hal itu karena belum merasa perlu karena akses dapat dilakukan dengan menggunakan excel atau notepad. Untuk data kecil sebenarnya tidak ada masalah, tetapi jika data yang berukuran besar, Excel tentu saja tidak sanggup menanganinya. Saya pernah mencoba mengkonversi file CSV ke dalam Access kemudian saya kembalikan lagi menjadi TXT untuk diolah Matlab dalam rangka Data Mining (waktu itu tugas Text Mining dari dosen saya). Tetapi tentu saja tidak efektif. Perlu dilakukan koneksi data langsung dari DBMS ke Matlab.
Berawal dari Hibah Penelitian dari Dikti (Hibah Bersaing) dimana tahun ketiga saya harus mengkoneksikan GIS desktop dengan Web GIS, mau tidak mau saya membutuhkan sistem basis data. Terpaksa saya harus mengkoneksikannya langsung. Cari paling mudah adalah lewat mekanisme Open Data Base Connectivity (ODBC) yang tersedia di Windows. ODBC ini memiliki keunggulan dalam hal fleksibilitas, dimana jika kita sudah merakit ODBC maka program yang telah dibuat dengan Matlab tidak tergantung dengan software DBMS yang telah ada karena koneksi antara program dengan database lewat ODBC, beda jika kita mengkoneksikan Matlab dengan Software DBMS langsung (Access, MysQL, Oracle, PostgreSQL, dll). Jika kita mengganti software DBMS, kita harus mengeset lagi program yang telah kita buat. Dengan DBMS, jika kita akan mengganti Software DBMS, tinggal menghubungkan Software DBMS dengan ODBC lagi, termasuk user dan password jika diperlukan.
Untuk membuat ODBC Anda dapat membaca literatur yang membahas tata caranya. Yang penting Anda ketahui adalah Windows yang Anda miliki, 64 Bit atau 32 Bit. Jika 32 bit sepertinya tidak ada masalah. Nah, masalah muncul jika windows yang digunakan versi 64 bit, karena ODBC yang digunakan harus mundur yang 32 bit karena software DBMS kebanyakan masih berversi 32 bit. Untuk windows 8 dengan searching di control panel, akan ditemukan dua pilihan, ODBC 32 bit atau ODBC 64 bit. Sedangkan jika Windows 7 64 bit, maka Anda harus masuk ke folder SysWOT di C: dan menjalankan file odbcad32.exe. Jika Anda memaksa menggunakan ODBC 64 bit padahal program yang Anda gunakan versi 32 bit, akan memunculkan pesan kesalahan saat melakukan koneksi Matlab dengan ODBC (mismatch .. bla bla).
Untuk menghubungkan Matlab dengan ODBC dapat Anda lakukan dengan langkah sebagai berikut. Misalkan Anda telah memiliki ODBC dari database Anda, misalnya bernama “lokasi” dengan user ID “user” dan password “123”, lakukan koneksi dengan instruksi:
Conn=database(‘lokasi’,’user’,’123)
Cukup sederhana. Cek koneksi dengan instruksi isconnection(Conn). Jika jawabannya 1 maka koneksi berjalan dengan baik, sebaliknya jika jawabannya nol, maka Anda harus mengecek error-nya. Ketik saja Conn.Message untuk melihat instruksi kesalahannya. Jika Database telah terisi, Anda dapat mengecek dengan instruksi sql “select”.
Results=fetch(conn,’select * from lokasi’)
Misalnya tabel yang ada di database kita lokasi. Anda akan menerima data dari database dengan nama Results yang siap Anda olah dengan Matlab. Bagaimana dengan input data ke database? Mudah saja, gunakan instruksi insert. Hanya saja sedikit rumit karena ada tata cara penulisan nama field yang ada di tabel. Misal ada dua field yaitu x dan y. Kemudian akan saya isi data dengan x=1 dan y=2, maka gunakan instruksi sebagai berikut:
Insert(Conn,’lokasi’,[{‘x’} {‘y’}],[1 2])
Jika tidak ada pesan kesalahan sintax di Matlab, cek apakah data sudah masuk di database Anda. Selamat mencoba.
amaizing !!!!
mas saya lagi ngerjakan tugas akhir ni, .. dan saya merasa tulisan mas sangat membantu saya.
sudah saya ikuti petunjuk yang mas intruksikan tapi koding yang ini knp ga da reaksi ya ?
tolong dibalas. trimakasie
conn = database(‘jst’,”,’password’);
e = exec(conn,’SELECT ALL ukuran,wrn_merah,wrn_hijau,wrn_biru FROM pola’);
e = fetch(e);
close(e)
outpola = e.Data;
close(conn)
… tp kalo koding ini dah deal
conn = database(‘jst’,”,”);
insert(conn,’pola’,{‘ukuran’,’wrn_merah’,’wrn_hijau’,’wrn_biru’},exdata_table)
close(conn)
agak aneh ya .. kalau saya dulu bisa fetch tapi ga bisa insert, anda malah bisa insert tapi ga bisa fetch, harus bisa ah ..
pertama setelah conn .. cek koneksi dengan instruksi isconnection(conn), kalau jawabannya 1 berarti koneksi ok.
saya jarangpake fungsi “exec”, langsung aja pake fetch bisa ga?
e = fetch(conn,’SELECT ALL ukuran,wrn_merah,wrn_hijau,wrn_biru FROM pola’);
trimakasih petuahnya mas… hehe
sekarang dah merangkak, … sudah nampil diCW, Tp ditabel belum ada data masuk !
nama form= dbpola, nama table = data_table
posisi coding sudah di dbpola_OpeningFcn
%koneksi positif
curs = exec(conn, ‘select all ukuran, wrn_merah,wrn_hijau, wrn_biru from pola’);
setdbprefs(‘DataReturnFormat’,’cellarray’);
curs = fetch(curs);
datafitur = curs.Data
celldisp(datafitur)
close(curs)
close(conn)
mohon bantuannya lagi mas ! he
wehh .. rumit juga ya. coba di aplikasi ditambahkan isconnection(conn). cek di command window apakah hasilnya 1 kalau program dijalankan. atau buat saja msgbox kalau 0 kirim pesan “koneksi error”.
trimakasih jawabannya mas !
sekarang dah bisa berjalan… (sudah terkoneksi dan tersimpan). hehehe
– tolong dicek mas !! sql saya untuk delete…
permasalahannya diCW atau di table ‘delete’ berhasil, tapi didatabase tidak… semua dah conect.
1.curs = exec(conn, ‘select all ukuran, wrn_merah,wrn_hijau, wrn_biru from pola’);
2.datafitur = curs.Data
3.datafitur(1,:)=[]
4.close(curs)
– coding memanggil form baru saya
callback(dbpola); % dbpola=nama formbaru
??? Error using ==> dbpola>dbpola_OutputFcn
Too many output arguments.
mana script delete nya?
jika script tidak bermasalah maka delete terjadi jika kondisi WHERE terpenuhi dan tidak ada FOREIGN KEY dari tabel lain (kecuali dengan tambahan ON DELETE …)
conn = ….
curs = exec(conn, ‘delete from pola where {1,1} ’); % script delete…
datafitur = curs.Data
datafitur(1,:)=[] % script menghapus
close(curs);
yang buat saya trauma mas !!
semua data terhapus… termasuk file queryConnect
maklum pemula. hehe
tolong dikoreksi mas y! perlukah saya buat primarykey ?
TRIMAKASIH
catt :
saya tidak menggunakan primarykey…
where {1,1} itu apaan? format standar nya kan:
DELETE FROM table_name
WHERE some_column=some_value;
coba cek lagi where {1,1} itu maksudnya apa?
{1,1} maksudnya saya buatkan untuk indeks, tapi tak reaksi …
______________________________________
| ukuran | warna merah | warna hijau | warna biru |
————————————————————-
| 0.230 | 0.222 | 0.238 | 0.254 |
| 0.220 | 0.242 | 0.220 | 0.214 |
| 0.200 | 0.254 | 0.258 | 0.250 |
| 0.270 | 0.242 | 0.210 | 0.214 |
ne saya buat. cursor =exec(conn,’DELETE FROM pola WHERE 1=1′) tapi masih menghapus semua juga . hehe
saya pengennya menghapus satu baris aja. beb…begitu lho ! 😀
kalo SQL ga kenal index, sepertinya yang dikenal hanya field, coba saya cek dulu
WOKEwh !
sy akan menunggu … 😀
WOKEwh !
sy akan menunggu … 😀
udah saya publish lama bang : https://rahmadya.com/2014/09/17/delete-sql-dengan-matlab/ .. kirain udah liat 😀
OWH… saya liat dan menunggu di komentar balasan… hehe
akan saya pelajari,
terimakasih mas !
Ass, pak sy sudh email ke bapak, bisa di cek email bapak, mksih sbelumnya
Pak mhon cek email bapak sy sudh email sy ingin tanyakan soal ANN pak, mksih pak.