Koneksi C#.NET dengan MySQL Menggunakan MySQL Connector/Net

dokumen-dokumen yang mirip
Koneksi Sederhana Database dengan C# (Lihat, Tambah, dan Hapus Data)

Koneksi Database Mysql dengan C#

BAB 4 HASIL DAN PEMBAHASAN

BAB II MICROSOFT VISUAL STUDIO

visit :

Aplikasi CRUD dengan Visual Basic 2012 [APLIKASI CRUD DENGAN VISUAL BASIC 2012 & MYSQL] September 18, & MySQL. Bahtiar Imran

Membuat Webservice Pada Visual Studio 2012 (C#.NET ver.4.5)

MODUL 6 JDBC (JAVA DATABASE CONNECTIVITY)

Form Login Menggunakan Combobox Dengan VB.Net dan MySQL Workbench

JOBSHEET 8 DATABASE IN VB

Jeffrey Hermanto Halimsetiawan tutorialpemrograman.wordpress.com 22 Maret 2009

Disini kita akan bahas cara koneksi antara Database MySQL dengan VB.Net 2010, semoga dengan ini E-book ini bisa ingat sepanjang jaman ya ^ ^

E-trik Ajax. Database MySQL. Dedi Alnas

MySQL J A M K E T I G A

APLIKASI MENGELOLA DATA ACCESS LOG MENGGUNAKAN C# Melihat LOG berdasar Hari, Jam, dan URL Terbanyak diakses

MODUL X DATABASE VB. Modul Praktikum Bahasa Pemrograman Visual (BPV)

MODUL 9. Pemrograman Visual dengan Database SQL Server

Pemrograman Database Java

IMPLEMENTASI PEMROGRAMAN VISUAL BASIC DENGAN DATABASE ACCESS

Materi Pemrograman Database 1 Didik Nugroho,S.Kom,M.kom MODUL III MEMBUAT FORM MENYIMPAN PROSES PEMBELIAN

BAB IX KONEKSI POSTGRESQL PADA JAVA (Netbeans)

TUGAS POLA-POLA PERANCANGAN SISTEM INFORMASI PERSEWAAN VCD DAN DVD. Dengan Design pattern (Factory Method)

P11 & 12 Operasi DML pada Form Aplikasi (Project Aplikasi Rumah Sakit)

9 LANGKAH MUDAH KONEKSIKAN VISUAL FOXPRO DENGAN MySQL

CHAPTER #9 Mengenal ADO.NET dan Koneksi Database

Aplikasi Insert, Update, Delete MYSQL di C#

PEMROGRAMAN VB.NET. Koneksi Ke Database

PEMROGRAMAN VISUAL BASIC

BAB VIII PENGENALAN DATABASE

Eksekusi file setup.exe yang ada dalam CD atau folder instalasi oracle.

BAB IV IMPLEMENTASI DAN EVALUASI. mempersiapkan kebutuhan system (baik hardware maupun software), persiapan

SISTEM TERDISTRIBUSI PERTEMUAN IV ASP.NET WEB SERVICE (1)

ADO (Active-x Data Object)

E-Trik Visual C++ 6.0

BAB IV IMPLEMENTASI SISTEM

Spesifikasi: Ukuran: 14x21m Tebal: 220 hlm Harga: Rp Terbit pertama: Mei 2005 Sinopsis singkat:

TUJUAN. Memahami Koneksi dan Pemrosesan Basis Data di Java Memahami JDBC Menggunakan MySQL pada program Java

CHAPTER #10 Databinding dengan ADO.NET

Tutorial Lazarus Pemrograman Pascal Console, Visual dan Database Husni, husni.trunojoyo.ac.id, komputasi.wordpress.com

MEMBUAT FORM INPUT DATA DENGAN VB NET 2005 DAN DATABASE MS SQL SERVER 2005 EXPRESS

Bab 4 Hasil dan Pembahasan

Identitas dosen POKOK BAHASAN. mendemonstrasikan tentang membuat project aplikasi dengan database access dengan benar (C3) Suherman,, ST Address

Membuat Aplikasi Tampil, Entri, Edit, Delete Mahasiswa

KA2173 Pemrograman Berorientasi Objek. 10 BAB X PENGAKSESAN DATABASE. H a l 64

M. Choirul Amri.

Praktikum 6 SubForm dan Kode VBA

Pengenalan APLIKASI DATABASE

Advantages. Keunggulan :

MODUL 4 INTERNET PROGRAMMING DATABASE

Gratis Tutorial Pemograman Visual Basic MEMBUAT CRUD VISUAL BASIC.NET DATABASE MYSQL

Spesifikasi: Ukuran: 14x21 cm Tebal: 159 hlm Harga: Rp Terbit pertama: Maret 2005 Sinopsis singkat:

BAB IV HASIL DAN PEMBAHASAN. sebagai sumber data untuk kemudian disimpan di dalam server. Database server

Budi Permana, S.Kom Pendahuluan. Lisensi Dokumen:

BAB V IMPLEMENTASI DAN PENGUJIAN SISTEM

Koneksi Database BAB 1

BAB 3 PERANCANGAN SISTEM

PEMROGRAMAN VB.NET. Sintaks Pada Class

KONEKSI DATABASE SQL DENGAN VB.NET

ACCOUNT Q VERSI 3 PENGATURAN PROGRAM ACCOUNT Q VERSI 3 PENGATURAN PROGRAM DAFTAR PERKIRAAN DAFTAR BANK DAFTAR CUSTOMER TRANSAKSI KEUANGAN

Program Penghitung Poin Klub Sepak Bola

BAB IV IMPLEMENTASI DAN EVALUASI SISTEM. telah dibuat sebelumnya, sehinggga user dapat memahami jalannya sistem tersebut.

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

Tutorial Jasper Report with JDBC Prerequisites: Jasper Report, ireport installed, MySQL installed, and NetBeans IDE

Script PHP dan MySQL J A M K E E M P A T

Bill of Material. Bab ini menjelaskan mengenai pembuatan form bill of material yang digunakan dalam program aplikasi sistem informasi manufaktur.

LAMPIRAN I LISTING PROGRAM

Membuat SlideShow Gambar

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

ALGORITMA DAN PEMROGRAMAN II. Indra Gunawan, ST., M.Kom., CEH., CHFI

MEMBACA RECORD DENGAN ADODC

MODUL PRAKTIKUM KE 9

Pemrograman Web. Koneksi dan Manipulasi Basis Data. Adam Hendra Brata

MODUL IX PEMROGRAMAN DATABASE DENGAN DELPHI. Untuk praktikum ini kita menggunakan Ms. Access sebagai databasenya.

Pembuatan Report menggunakan JasperReports dan ireport

MODUL 8 Insert, Update, & delete

Input, edit dan hapus data Master Barang

Tutorial Aplikasi Database Matakuliah Berbasis Java Swing Menggunakan Java Database Connectivity (JDBC)

Modul Praktik Pemrograman Komputer II Pengolahan DATABASE Berbasis MYSQL Menggunakan Bahasa Pemrograman Microsoft Visual C Express

Langkah-Langkah Pemrograman JDBC MENGIMPOR PACKAGE JAVA.SQL MEMANGGIL DRIVER JDBC

[Document title] Abdullah Hafizh [Course title] [Date] Abdullah Hafizh InterSoft Rekayasa Perangkat Lunak SMKN 10 Jakarta 0

MODUL 2 SELECTION & LOOPING PADA FORM

Visual. Jubilee Enterprise. C# Komplet PENERBIT PT ELEX MEDIA KOMPUTINDO

BAB IV IMPLEMENTASI DAN PENGUJIAN

LAMPIRAN. 2. Berapa penghasilan yang anda terima per bulan? 3. Apakah anda sering menggunakan kendaraan pribadi anda?

MySQL Databases. Dasar-dasar MySQL dan Implementasi MySQL kedalam pemrograman PHP. Jakarta, 16 April 2011 Oleh: M. Awaludin, S.Kom

Otodidak. MySQL untuk Pemula

PHP dan MySQL. Mempelajari koneksi PHP. Fungsi-fungsi aksesnya. Muhammad Zen Samsono Hadi, ST. MSc

BAB 3 ANALISIS DAN PERANCANGAN. menentukan dan mengungkapkan kebutuhan sistem. Kebutuhan sistem terbagi menjadi

SMK BHAKTI NUSANTARA BOJA

MODUL 7. Apakah Joomla itu? A. Pra-Instalasi Joomla. Tujuan : 1. Pengenalan Joomla 2. Installasi Joomla 3. Pengenalan Section dan Categories

BAB VII Database MYSQL

MODUL 1. KONEKTIVITAS PHP DENGAN MySQL. Digunakan untuk melakukan uji dan koneksi kepada server database MySQL.

Menampilkan Data/Tabel MySQL di Ms.Access

Koneksi Java ke MySQL Database. Edi Sugiarto, S.Kom, M.Kom

Membuat Koneksi Database Menggunakan ODBC (Open Database Conectivity)

Instalasi Visual Studio 2008 Profesional(64 dan 32 bit) di windows 7

Tahap Instalasi PostgreSQL di Windows

Mengenal Pemrograman PHP7 Database untuk Pemula

MICROSOFT VISUAL FOXPRO

BERMAIN DATA DENGAN SQL SERVER

Transkripsi:

Koneksi C#.NET dengan MySQL Menggunakan MySQL Connector/Net July 13, 2009 by Kang Admin Leave a reply» Artikel sederhana ini membahas bagaimana melakukan koneksi secara manual dari aplikasi Visual C#.NET ke database MySQL. Untuk menghubungkan kedua teknologi tersebut, dibutuhkan suatu kumpulan library yang berfungsi sebagai konektor antara aplikasi dengan database server. MySQL sendiri sudah menyediakan konektor tersebut dengan nama MySQL Connector/Net. Bila Anda belum punya konektor tersebut, silakkan download di situs resmi MySQL, cari versi terbarunya di bagian Connector/Net. Sebagai contoh basis datanya, saya menggunakan basis data World.sql, yang juga dapat didownload dari situsnya MySQL. Langkah-langkah 1. Buatkan project baru pada Visual Studio, pilih Windows Forms Application pada Visual Studio installed templates. 2. Tambahkan komponen DataGridView ke dalam form yang telah dibuat.

3. Tambahkan dua buah Button dan atur posisinya seperti terlihat pada gambar di bawah ini. 4. Karena kita menambahkan library tambahan yaitu MySQL Connector/Net, maka klik kanan pada node Reference pada jendela Solution Explorer, kemudian pilih Add Reference, setelah itu muncul jendela Add Reference, klik Tab Browse. Kemudian cari folder hasil ekstrak dari MySQL Connector/Net, pilihlah file mysql.data.dll. Berikut gambar dari jendela Add Reference dan hasil referensi ke file mysql.data.dll yang telah berhasil.

5. Klik kanan form1.cs (misalnya nama form-nya form1.cs) pada aplikasi yang telah Anda buat, pilih View Code, kemudian tambahkan kode program berikut pada form1.cs. File Form1.cs view sourceprint 01.using System; 02.using System.Data; 03.using System.Windows.Forms; 04. 05.// referensi tambahan ke library MySQL Connector/Net 06.using MySql.Data.MySqlClient; 07. 08.namespace bowo.xcsl 09. 10. public partial class Form1 : Form 11. 12. // definisi data koneksi 13. private string host = "localhost"; 14. private string username = "root"; 15. private string password = ""; 16. private string database = "world"; 17. private string tabel = "city";

18. 19. public Form1() 20. 21. InitializeComponent(); 22. 23. 24. private void AmbilData() 25. 26. // coba ambil data di database mysql 27. try 28. 29. // waktu mulai proses 30. long start = Environment.TickCount; 31. 32. // lakukan koneksi 33. MySqlConnection konektor = 34. new MySqlConnection("datasource=" + host + ";" + 35. "username=" + username + ";" + 36. "password=" + password + ";" + 37. "database=" + database); 38. 39. // buatkan dataset 40. DataSet sqldataset = new DataSet(); 41. 42. // query sql 43. MySqlDataAdapter sqladapter = 44. new MySqlDataAdapter( 45. "SELECT * FROM " + tabel, konektor); 46. 47. // binding data 48. sqladapter.fill(sqldataset, tabel); 49. 50. // kirim ke datagrid 51. dgridhasil.datasource = sqldataset.tables[tabel].defaultview; 52. 53. // waktu akhir proses 54. long end = Environment.TickCount; 55. 56. // lama pemrosesan 57. lblwaktuproses.text = "Waktu Pemrosesan = " + 58. (end - start).tostring() + " ms"; 59. 60. catch (MySqlException e) 61. 62. MessageBox.Show(e.Message); 63. 64. catch (Exception e) 65. 66. MessageBox.Show(e.Message); 67. 68. 69. 70. private void btambildata_click(object sender, EventArgs e) 71.

72. AmbilData(); 73. 74. 75. private void btkeluar_click(object sender, EventArgs e) 76. 77. Application.Exit(); 78. 79. 80. Kode di atas akan melakukan koneksi ke database MySQL dengan nama database world dan akan melakukan proses mengambil semua data pada tabel city. Jika terjadi kesalahan dalam penulisan perintah SQL, maka terjadi exception pada MySQLException dan akan memberitahu kepada Anda letak kesalahan perintah SQL. Dilihat dari arus datanya berdasarkan kode program di atas, maka dapat digambarkan secara sederhana sebagai berikut: [MySQL Database Server] -> MySqlConnection -> DataSet -> MySqlDataAdapter -> DataGridView -> [User] 6. Pastikan MySQL Servernya telah dijalankan, setelah itu lakukan proses Build program (F6) kemudian jalankan program (CTRL + F5). Berikut ini tampilan apabila tombol Ambil Data diklik.

Pengelolaan Database MySQL Melalui C# August 26, 2009 by Kang Admin Leave a reply» Menyambung artikel sebelumnya yang berjudul Koneksi C#.NET dengan MySQL Menggunakan MySQL Connector/Net, kali ini saya akan menjelaskan bagaimana untuk melakukan proses pengelolaan database MySQL yang meliputi proses INSERT, UPDATE, dan DELETE melalui aplikasi C#.NET. Pada dasarnya C#.NET memiliki database server sendiri yang khusus dibuat untuk teknologi.net yaitu MSSQL atau yang lebih dikenal dengan SQL Server. MySQL sebagai database server yang sangat populer tidak ketinggalan untuk menyediakan connector agar databasenya tetap bisa diakses oleh berbagai macam bahasa pemrograman dan juga multiplatform, salah satunya untuk platform Windows dan untuk framework.net, MySQL menyediakan Connector/Net sebagai library yang khusus dibuat untuk bahasa pemrograman yang berbasis.net Framework. Aplikasi yang akan kita buat merupakan aplikasi yang sederhana, yang penting ada proses INSERT, UPDATE, DELETE yang merupakan proses yang wajib disediakan disamping proses SELECT apabila kita membuat aplikasi yang berhubungan dengan pengelolaan database. Aplikasi ini sebenarnya saya buat secara coba-coba. Minimnya pengetahuan dan sumber referensi membuat saya dalam melakukan coding harus melewati proses try and error berkalikali. Entah kenapa waktu saya utak-atik ternyata bisa jadi dan berjalan seperti yang diharapkan, Alhamdulillah. Mungkin Anda lebih tahu untuk coding-nya agar lebih simpel dan bagus, silakkan beri komentarnya Pada dasarnya saya membuat tiga buah kelas untuk membuat program ini. Kelas tersebut antara lain : 1. Kelas KoneksiServer Kelas ini bertujuan untuk melakukan koneksi ke database MySQL. Kelas ini juga nantinya tersedia property untuk melakukan query. 2. Kelas FormUtama Kelas ini sebenarnya merupakan kelas yang dibuat secara otomatis ketika sebuah form dibuat. Kelas ini menampung komponen / control windows sebagai antarmuka utama aplikasi. 3. Kelas FormPengelolaan Untuk memudahkan agar control untuk pengelolaan tidak tercampur dengan hasil keluaran, maka dibuat kelas ini.

Sebagai databasenya, saya menggunakan contoh database world.sql yang disediakan secara gratis pada situs dev.mysql.com Bagaimana membuat aplikasi ini? Silakkan ikuti langkah berikut : A. Membuat Form Utama 1. Buat project baru pada Visual Studio, kemudian pilih templates untuk Windows Form Applications 2. Buatkan referensi ke MySQL Connector/Net. Bila Anda belum paham bagaimana caranya, silakkan lihat artikel Koneksi C#.NET dengan MySQL Menggunakan MySQL Connector/Net 3. Tambahkan dan susun beberapa komponen seperti gambar berikut : 4. Atur property pada form baru tersebut sebagai berikut :

5. Beri event handler pada beberapa control tersebut dan juga tuliskan kode programnya. Untuk lebih jelasnya, silakkan lihat kode program berikut : 1. File FormUtama.cs /* Aplikasi C#.NET Untuk Pengolahan Basis Data Sederhana Melalui MySQL * * Author : Husnan Wibowo * URL : http://xcsl.co.nr * email : bowo_iostream[at]yahoo.com * (P) Agustus, 2009 * * The author make NO warranty of any kind, expressed or * implied, with regard to these programs. * The author shall NOT be liable in any event for * incidental or consequential damages in connection with, * or arising out of, the furnishing, performance, or use of * these programs. */ using System; using System.Data; using System.Drawing; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace bowo.xcsl public partial class FormUtama : Form // buatkan objek koneksi ke server

private KoneksiServer koneksi = new KoneksiServer(); // siapkan variabel untuk dataset (untuk data grid) private DataSet dataset = new DataSet(); // buatkan objek ke kelas FormPengelolaan private FormPengelolaan formkelola; // menampung nomor id kota pilihan pengguna private string id = ""; public FormUtama() InitializeComponent(); btedit.enabled = false; bthapus.enabled = false; private void dtgridkeluaran_cellclick(object sender, DataGridViewCellEventArgs e) // batasi pemilihan cell hanya untuk kolom id saja if (e.columnindex == 0) // dapatkan nomor id dari datagrid ketika pengguna memilih cell pada kolom pertama id = dtgridkeluaran.currentcell.value.tostring(); btedit.enabled = true; bthapus.enabled = true; else // reset id dan disable tombol edit id = ""; btedit.enabled = false; bthapus.enabled = false; private void btkeluar_click(object sender, EventArgs e) Application.Exit(); private void bttampil_click(object sender, EventArgs e) UpdateDataGrid(); private void btedit_click(object sender, EventArgs e) // pastikan pengguna telah memilih no id dari datagrid if (id.trim()!= "") // set mode pengelolaan formkelola = new FormPengelolaan("edit", id);

// form pengelolaan mereferensi form utama formkelola.formutamaref = this; // tampilkan form pengelolaan formkelola.showdialog(); private void bttambah_click(object sender, EventArgs e) // set mode pengelolaan // argumen null diberikan karena untuk menambah data tidak diperlukan nomor id formkelola = new FormPengelolaan("tambah", null); // form pengelolaan mereferensi form utama formkelola.formutamaref = this; // tampilkan form pengelolaan formkelola.showdialog(); private void bthapus_click(object sender, EventArgs e) // pastikan pengguna telah memilih no. id dari datagrid if (id.trim()!= "") // dapatkan konfirmasi dari pengguna DialogResult konfirmasi = MessageBox.Show("Hapus Data Ini...?", "Perhatian!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); 1"); // konfirmasi untuk menghapus if (konfirmasi == DialogResult.OK) // hapus data terpilih koneksi.sqlquery("delete FROM city WHERE id = " + id + " LIMIT try koneksi.mycmd.executenonquery(); // proses hapus OK MessageBox.Show("Data telah dihapus!", "Hapus OK", MessageBoxButtons.OK, MessageBoxIcon.Information); catch (MySqlException err) MessageBox.Show("MySQL ERROR : " + err.message, "SQL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); catch (Exception err) MessageBox.Show("PROGRAM ERROR : " + err.message, "PROGRAM ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

// tutup koneksi koneksi.konektor.close(); // update grid setelah terjadi perubahan UpdateDataGrid(); public void UpdateDataGrid() // update datagrid dataset.clear(); // lakukan query select koneksi.sqlquery("select city.id, city.name AS Kota, city.population AS Populasi, city.district AS Provinsi, country.name AS Negara, country.region AS Kawasan, country.continent AS Benua FROM city, country WHERE city.countrycode = country.code ORDER BY country.name ASC"); try MySqlDataAdapter sqladapter = new MySqlDataAdapter(koneksi.MyCmd.CommandText, koneksi.konektor); sqladapter.fill(dataset, koneksi.mycmd.commandtext); dtgridkeluaran.datasource = dataset.tables[koneksi.mycmd.commandtext].defaultview; lblnbaris.text = "Jumlah Data = " + dtgridkeluaran.rowcount.tostring(); catch (MySqlException err) MessageBox.Show("MySQL ERROR : " + err.message, "SQL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); catch (Exception err) MessageBox.Show("PROGRAM ERROR : " + err.message, "PROGRAM ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); // tutup koneksi koneksi.konektor.close(); Penjelasan file FormUtama.cs private KoneksiServer koneksi = new KoneksiServer();

merupakan statemen untuk melakukan koneksi ke server MySQL. KoneksiServer merupakan kelas yang didefinisikan pada file KoneksiServer.cs private DataSet dataset = new DataSet(); merupakan statemen untuk membuat objek dataset. DataSet merupakan kontrol untuk melakukan akses data. DataSet juga menampung semua data tabel, relasi, dan juga hasil dari query. DataSet menyimpan data tersebut pada memori sehingga data tersebut dapat dengan cepat diakses atau dimanipulasi. private FormPengelolaan formkelola; Karena aplikasi ini memiliki form pengelolaan tersendiri, maka statemen di atas perlu dituliskan. private string id = ; merupakan variabel untuk menyimpan nomor id data tabel. Nilai pada variabel ini nantinya digunakan sebagai data unik untuk melakukan proses edit dan delete. Aplikasi ini dalam melakukan proses edit dan delete harus mengetahui nomor id dari tabel yang bersangkutan melalui DataGrid yang ditampilkan. Oleh karena itu pengguna harus memilih kolom ID pada DataGrid untuk memilih data mana yang akan dihapus atau diedit. Untuk itu event handler berikut perlu dituliskan. private void dtgridkeluaran_cellclick(object sender, DataGridViewCellEventArgs e) Karena event handler tersebut dapat dijalankan untuk semua kolom dan baris, sedangkan untuk melakukan proses edit dan delete hanya membutuhkan data dari kolom ke 0 maka statement berikut perlu dituliskan. if (e.columnindex == 0) id = dtgridkeluaran.currentcell.value.tostring(); variabel id di atas akan memperoleh nilai dari cell pada kolom ke 0 yang dijalankan ketika pengguna memilih nomor id pada DataGrid.

formkelola = new FormPengelolaan( edit, id); akan membuat objek dari FormPengelolaan, argumen yang disertakan menandakan bahwa form yang dibuat untuk keperluan edit pada data dengan id tertentu. formkelola.formutamaref = this; membuat formkelola dapat mengakses data-data pada form utama. Hal ini untuk melakukan proses Update terhadap DataGrid setelah pengguna menekan tombol OK yang menandakan telah terjadi perubahan pada isi tabel. formkelola.showdialog(); berguna untuk menampilkan formkelola dari formutama. Form utama tidak akan bisa diakses sebelum formkelola ditutup. koneksi.sqlquery( DELETE FROM city WHERE id = + id + LIMIT 1 ); akan melakukan proses delete pada data tertentu. Property SqlQuery merupakan property yang akan melakukan koneksi ke server MySQL kemudian mempersiapkan proses eksekusi terhadap query yang dilampirkan pada argumennya. koneksi.mycmd.executenonquery(); berguna untuk mengeksekusi query dari perintah sql seperti Insert, Update, dan Delete. Method ExecuteNonQuery merupakan method milik kelas MySqlCommand. Method : public void UpdateDataGrid() dataset.clear();

digunakan sebagai method untuk melakukan proses refresh terhadap tampilan DataGrid. dataset.clear() akan membuat dataset dikosongkan sehingga secara otomatis tampilan DataGrid akan kosong. Untuk mengisinya kembali beberapa statemen berikut diperlukan. Statemen ini merupakan statemen untuk memperoleh data (proses SELECT). MySqlDataAdapter sqladapter = new MySqlDataAdapter(koneksi.MyCmd.CommandText, koneksi.konektor); sqladapter.fill(dataset, koneksi.mycmd.commandtext); dtgridkeluaran.datasource = dataset.tables[koneksi.mycmd.commandtext].defaultview; Statemen di atas mirip dengan statemen pada artikel Koneksi C#.NET dengan MySQL Menggunakan MySQL Connector/Net, namun pada aplikasi ini tidak lagi menggunakan tabel tunggal, melainkan relasi tabel, sehingga dapat diganti dari tabel ke property CommandText. Pada aplikasi ini dibuatkan beberapa Exception Handling yang berguna untuk mengantisipasi kesalahan baik dari kesalahan sintaks query MySQL (MySqlException) maupun kesalahan umum program (Exception). B. Membuat Form Pengelolaan Form pengelolaan merupakan form yang khusus dibuat untuk melakukan proses edit dan tambah data. Form ini dipanggil dari form utama. Buatlah form dan komponennya serta susun seperti gambar berikut : Setelah itu atur property dari masing-masing komponen sebagai berikut :

Kemudian seperti biasa buatkan event handler yang sesuai dari komponen / control tersebut dan tuliskan kode program berikut pada file FormPengelolaan.cs 2. File FormPengelolaan.cs /* Aplikasi C#.NET Untuk Pengolahan Basis Data Sederhana Melalui MySQL * * Author : Husnan Wibowo * URL : http://xcsl.co.nr * email : bowo_iostream[at]yahoo.com * (P) Agustus, 2009 * * The author make NO warranty of any kind, expressed or * implied, with regard to these programs. * The author shall NOT be liable in any event for * incidental or consequential damages in connection with, * or arising out of, the furnishing, performance, or use of * these programs. */ using System; using System.Data; using System.Drawing; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace bowo.xcsl public partial class FormPengelolaan : Form // buka koneksi ke server private KoneksiServer koneksi = new KoneksiServer(); private FormUtama formutamaref; private MySqlDataReader datareader;

private bool istambah; private string id; public FormPengelolaan(string mode, string id) InitializeComponent(); // dapatkan nama negara AmbilNegara(); // mode query untuk tambah atau edit if (mode.tolower() == "tambah") // set variabel bahwa pengguna telah menekan tombol tambah // judul form juga diubah istambah = true; this.text += " [Tambah]"; else // edit istambah = false; this.text += " [Edit]"; this.id = id; // tampilkan data dari database ke textbox TampilkanDataTerpilih(); private void btreset_click(object sender, EventArgs e) // reset semua masukkan txtkota.text = ""; txtprovinsi.text = ""; txtpopulasi.text = ""; cmbnegara.text = ""; private void btbatal_click(object sender, EventArgs e) // batal edit / tambah, keluar form pengelolaan this.close(); private void btok_click(object sender, EventArgs e) // test masukkan if (txtkota.text.trim() == "" txtprovinsi.text.trim() == "" txtpopulasi.text.trim() == "" cmbnegara.selectedindex == -1) MessageBox.Show("Lengkapi Semua Masukkan!", "Masukkan Salah", MessageBoxButtons.OK, MessageBoxIcon.Error); // masukkan OK else

try // mode tambah data if (istambah) // sql penambahan data dari masukkan pengguna koneksi.sqlquery("insert INTO city(name, countrycode, district, population)" + " VALUES('" + txtkota.text + "', '" + AmbilKodeNegara() + "', '" + txtprovinsi.text + "', " + txtpopulasi.text + ")"); // eksekusi sql untuk tambah data koneksi.mycmd.executenonquery(); // proses tambah OK MessageBox.Show("Data telah ditambahkan.", "Input OK", MessageBoxButtons.OK, MessageBoxIcon.Information); // mode edit data else // sql update data dari masukkan penguna koneksi.sqlquery("update city SET name = '" + txtkota.text + "', countrycode = '" + AmbilKodeNegara() + "'," + " district = '" + txtprovinsi.text + "', population = " + txtpopulasi.text + " WHERE id = " + id); // eksekusi sql untuk edit data koneksi.mycmd.executenonquery(); // proses edit OK MessageBox.Show("Data telah diubah.", "Edit OK", MessageBoxButtons.OK, MessageBoxIcon.Information); // tutup koneksi koneksi.konektor.close(); // update grid setelah terjadi perubahan formutamaref.updatedatagrid(); // tutup form this.close(); catch (MySqlException err) MessageBox.Show("MySQL ERROR : " + err.message, "SQL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); catch (Exception err) MessageBox.Show("PROGRAM ERROR : " + err.message, "PROGRAM ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

public void AmbilNegara() // ambil nama negara tanpa duplikasi koneksi.sqlquery("select DISTINCT name FROM country ORDER BY name ASC"); try datareader = koneksi.mycmd.executereader(); // ambil nama negara dan masukkan ke dalam item milik combobox while (datareader.read()) cmbnegara.items.add(datareader.getstring("name")); // tutup datareader datareader.close(); catch (MySqlException err) MessageBox.Show("MySQL ERROR : " + err.message, "SQL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); catch (Exception err) MessageBox.Show("PROGRAM ERROR : " + err.message, "PROGRAM ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); // tutup koneksi koneksi.konektor.close(); public string AmbilKodeNegara() koneksi.sqlquery("select code FROM country WHERE name = '" + cmbnegara.selecteditem.tostring() + "' LIMIT 1"); // dapatkan data tunggal object kodenegara = koneksi.mycmd.executescalar(); return kodenegara.tostring(); public void TampilkanDataTerpilih() // tampilkan data yang perlu diedit koneksi.sqlquery("select city.name AS kota, country.name AS negara, city.district, city.population FROM city, country WHERE city.countrycode = country.code AND id = " + id); try datareader = koneksi.mycmd.executereader(); // salin data dari database ke textbox dan combobox

if (datareader.read()) txtkota.text = datareader.getstring("kota"); txtprovinsi.text = datareader.getstring("district"); txtpopulasi.text = datareader.getstring("population"); cmbnegara.selecteditem = datareader.getstring("negara"); // tutup datareader datareader.close(); catch (MySqlException err) MessageBox.Show("MySQL ERROR : " + err.message, "SQL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); catch (Exception err) MessageBox.Show("PROGRAM ERROR : " + err.message, "PROGRAM ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); // tutup koneksi koneksi.konektor.close(); // mendapatkan semua nilai dari form utama public FormUtama FormUtamaRef get return formutamaref; set formutamaref = value; Penjelasan file FormPengelolaan.cs private KoneksiServer koneksi = new KoneksiServer(); private FormUtama formutamaref; private MySqlDataReader datareader; private bool istambah; private string id; merupakan statemen untuk deklarasi variabel. Diantaranya ada untuk melakukan koneksi, variabel penampung referensi ke kelas FormUtama, datareader sebagai penampung data yang siap untuk ditampilkan, variabel istambah sebagai penentu apakah saatnya mode tambah atau bukan, variabel id sebagai alamat data untuk mengedit data dengan id tertentu.

koneksi.sqlquery( INSERT INTO city(name, countrycode, district, population) + VALUES( + txtkota.text +, + AmbilKodeNegara() +, + txtprovinsi.text +, + txtpopulasi.text + ) ); merupakan statemen untuk melakukan proses penambahan data. Data diambil dari textbox masukkan. Sedangkan method AmbilKodeNegara merupakan method untuk mengambil kode negara dari nama negara yang ditampilkan pada items combobox. koneksi.mycmd.executenonquery(); Akan melakukan proses eksekusi query insert di atas. koneksi.konektor.close(); formutamaref.updatedatagrid(); this.close(); Berguna untuk menutup koneksi setelah selesai proses tambah atau edit, kemudian akan melakukan proses refresh pada DataGrid pada FormUtama, kemudian secara otomatis FormPengelolaan akan ditutup. Method : public void AmbilNegara().. berguna untuk mendapatkan nama-nama negara pada database dan akan memasukkan data tersebut ke items combobox.

datareader = koneksi.mycmd.executereader(); berfungsi untuk mendapatkan data-data hasil query. while (datareader.read()) cmbnegara.items.add(datareader.getstring( name )); berfungsi untuk mendapatkan semua data query dengan nama field name kemudian memasukkan nilainya ke items milik combobox. Proses tersebut akan berhenti jika Method Read() bernilai false yang berarti data telah habis dibaca. Method / public string AmbilKodeNegara() koneksi.sqlquery( SELECT code FROM country WHERE name = + cmbnegara.selecteditem.tostring() + LIMIT 1 ); object kodenegara = koneksi.mycmd.executescalar(); return kodenegara.tostring(); berfungsi untuk mendapatkan kode negara dari nama negara. Hal ini dilakukan karena proses pengolahan hanya pada tabel city yang tidak memiliki nama negara namun memiliki kode negara. Sedangkan tabel country memiliki kode dan nama negara sehingga kita membutuhkan tabel country ini untuk mendapatkan kode negara dari nama negara yang kemudian kode negara ini akan dimasukkan ke dalam tabel city. Mungkin method AmbilKodeNegara() ini bisa diganti dengan subquery yang langsung dituliskan pada perintah query dimana method ini dipanggil. Method : public void TampilkanDataTerpilih()

. merupakan method yang berguna untuk menyalin data terpilih (saat penguna memilih kolom id pada DataGrid, kemudian menekan tombol edit) yang dijalankan pada saat tombol edit ditekan. koneksi.sqlquery( SELECT city.name AS kota, country.name AS negara, city.district, city.population FROM city, country WHERE city.countrycode = country.code AND id = + id); datareader = koneksi.mycmd.executereader(); if (datareader.read()) txtkota.text = datareader.getstring( kota ); txtprovinsi.text = datareader.getstring( district ); txtpopulasi.text = datareader.getstring( population ); cmbnegara.selecteditem = datareader.getstring( negara ); merupakan statement untuk mendapatkan data query tunggal, artinya keluarannya hanya satu buah. Data dari datareader disalin ke textbox yang bersesuaian berdasarkan nilai argumen datareader.getstring(); C. Membuat Kelas KoneksiServer Kelas KoneksiServer yang berada pada file KoneksiServer.cs merupakan kelas yang digunakan untuk melakukan koneksi ke server database MySQL. Oleh karenanya kelas ini seharusnya dibuatkan objeknya dahulu sebelum melakukan proses query. Untuk membuat kelas ini nya cukup klik kanan pada project di jendela Solution Explorer, dan pilih Add -> Class Setelah jendela Add New Item muncul ganti nama filenya menjadi KoneksiServer.cs Berbeda dengan kelas FormUtama dan FormPengelolaan, kelas ini bukanlah kelas yang diturunkan dari kelas Form, jadi kelas ini tidak memiliki tampilan form windows. Berikut kode program dari kelas KoneksiServer :

3. File KoneksiServer.cs /* Aplikasi C#.NET Untuk Pengolahan Basis Data Sederhana Melalui MySQL * * Author : Husnan Wibowo * URL : http://xcsl.co.nr * email : bowo_iostream[at]yahoo.com * (P) Agustus, 2009 * * The author make NO warranty of any kind, expressed or * implied, with regard to these programs. * The author shall NOT be liable in any event for * incidental or consequential damages in connection with, * or arising out of, the furnishing, performance, or use of * these programs. */ using System; using System.Data; using System.Drawing; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace bowo.xcsl // kelas koneksi ke MySQL Server public class KoneksiServer // definisi data koneksi private string host = "localhost"; private string username = "root"; private string password = ""; private string database = "world"; // deklarasi variabel untuk keperluan operasi MySQL private MySqlCommand mycmd; private MySqlConnection konektor; // inisialisasi koneksi public void SqlQuery(string sql) // objek untuk keperluan penulisan dan operasi sql mycmd = new MySqlCommand(); // coba lakukan koneksi ke server try konektor = new MySqlConnection("datasource=" + host + ";" + "username=" + username + ";" + "password=" + password + ";" + "database=" + database); // buka koneksi konektor.open();

// eksekusi perintah query mycmd.commandtext = sql; mycmd.connection = konektor; catch (MySqlException err) // tutup koneksi ketika terjadi kegagalan konektor.close(); MessageBox.Show("MySQL ERROR : " + err.message, "Gagal Koneksi", MessageBoxButtons.OK, MessageBoxIcon.Error); catch (Exception err) MessageBox.Show("PROGRAM ERROR : " + err.message, "PROGRAM ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); // dapatkan dan set objek dari MySqlCommand public MySqlCommand MyCmd get return mycmd; set mycmd= value; // dapatkan objek dari MySqlConnection public MySqlConnection Konektor get return konektor; Penjelasan file KoneksiServer.cs private string host = localhost ; private string username = root ; private string password = ; private string database = world ; merupakan statemen penting untuk inisialisasi awal agar aplikasi dapat terhubung dengan server dengan baik. konektor = new MySqlConnection( datasource= + host + ; + username= + username + ; +

password= + password + ; + database= + database); konektor.open(); berguna untuk melakukan koneksi ke server database MySQL, kemudian buka koneksi tersebut. mycmd.commandtext = sql; mycmd.connection = konektor; MySqlCommand akan menampung sintaks sql yang berasal dari parameter method SqlQuery(string sql), yang kemudian akan menentukan koneksi yang dipakainya, dalam hal ini koneksi yang baru saja dibuat. Karena kelas ini digunakan oleh kelas-kelas lain yang dituliskan dalam file-file yang terpisah namun tetap dalam satu namespace, maka property tambahan berikut yang bersifat public diperlukan. Hal ini berguna agar kelas lain dapat mengakses kelas ini melalui property yang bersangkutan. Berikut property yang dimaksud : public MySqlCommand MyCmd get return mycmd; set mycmd= value; public MySqlConnection Konektor get return konektor; Berikut beberapa tampilan pada saat program dijalankan.

1. Tombol Tampil Ditekan

2. Tombol Tambah Ditekan (Form Pengelolaan tampil) 3. Hasil Perubahan Setelah Tambah Data

4. Tombol Edit Ditekan (Form Pengelolaan tampil)

5. Tombol Hapus Ditekan (Dialog Konfirmasi tampil) 6. Database world Belum Dibuat (ERROR TEST)

7. Program Error, Data Tidak Tercukupi (ERROR TEST) Catatan : Mengingat program ini merupakan program dari hasil percobaan, sehingga program ini belum teruji 100 %, kemungkinan masih banyak bugs (Use At Your Own Risk!! ). Mungkin Anda tahu cara koneksi ke server dan pemrograman databasenya ada yang lebih baik lagi, karena saya juga masih belajar dan tergolong newbie. Namun demikian semoga program ini dapat menjadi pengetahuan tambahan bagi Anda yang suka coding. Bila Anda mau mencoba program pengolah database ini, silakkan download link berikut : Aplikasi MySQL CSharp.zip download (412 Kb) NB : Untuk menjalankan program ini, komputer Anda harus : 1. Telah terinstall.net Framework 2.0 ke atas. 2. Database world.sql telah terpasang pada MySQL Server Anda. 3. File mysql.data.dll berada pada satu folder dengan file Aplikasi MySQL CSharp.exe