31350323 c Dengan Mysql

30
 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 di- download 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.

Transcript of 31350323 c Dengan Mysql

Page 1: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 1/30

 

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 VisualC#.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 di-

download dari situsnya MySQL.

Langkah-langkah

1. Buatkan project baru pada Visual Studio, pilih Windows Forms Application pada Visual Studioinstalled templates.

 

2. Tambahkan komponen DataGridView ke dalam form yang telah dibuat.

Page 2: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 2/30

 

 

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 MySQLConnector/Net, pilihlah file mysql.data.dll. Berikut gambar dari jendela Add Reference dan hasil

referensi ke file mysql.data.dll yang telah berhasil.

Page 3: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 3/30

 

 

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 source print01.using System;02.using System.Data;03.using System.Windows.Forms;

04. 05.// referensi tambahan ke library MySQL Connector/Net06.using MySql.Data.MySqlClient;

07. 

08.namespace bowo.xcsl09.{10. public partial class Form1 : Form11. {12. // definisi data koneksi13. private string host = "localhost";14. private string username = "root";15. private string password = "";16. private string database = "world";17. private string tabel = "city";

Page 4: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 4/30

 

18. 19. public Form1()20. {21. InitializeComponent();22. }

23. 

24. private void AmbilData()25. {26. // coba ambil data di database mysql27. try28. {29. // waktu mulai proses30. long start = Environment.TickCount;

31. 32. // lakukan koneksi33. MySqlConnection konektor =34. new MySqlConnection("datasource=" + host + ";" +35. "username=" + username + ";" +36. "password=" + password + ";" +

37. "database=" + database);38. 39. // buatkan dataset40. DataSet sqlDataset = new DataSet();

41. 42. // query sql43. MySqlDataAdapter sqlAdapter =44. new MySqlDataAdapter(45. "SELECT * FROM " + tabel, konektor);

46. 47. // binding data48. sqlAdapter.Fill(sqlDataset, tabel);

49. 50. // kirim ke datagrid51. dgridHasil.DataSource = sqlDataset.Tables[tabel].DefaultView;

52. 53. // waktu akhir proses54. long end = Environment.TickCount;

55. 56. // lama pemrosesan57. 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. {

Page 5: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 5/30

 

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 di-klik.

Page 6: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 6/30

 

 Pengelolaan Database MySQL Melalui C#

August 26, 2009 by Kang Admin Leave a reply » 

Menyambung artikel sebelumnya yang berjudul Koneksi C#.NET dengan MySQLMenggunakan MySQL Connector/Net, kali ini saya akan menjelaskan bagaimana untuk 

melakukan proses pengelolaan database MySQL yang meliputi proses INSERT, UPDATE, danDELETE 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 diaksesoleh 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 prosesINSERT, 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 ‘ berkali-kali. Entahkenapa 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, makadibuat kelas ini.

Page 7: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 7/30

 

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 :

Page 8: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 8/30

 

 

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

Page 9: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 9/30

 

private KoneksiServer koneksi = new KoneksiServer();

// siapkan variabel untuk dataset (untuk data grid)private DataSet dataSet = new DataSet();

// buatkan objek ke kelas FormPengelolaanprivate FormPengelolaan formKelola;

// menampung nomor id kota pilihan penggunaprivate 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 sajaif (e.ColumnIndex == 0){

// dapatkan nomor id dari datagrid ketika pengguna memilih cellpada kolom pertama

id = dtGridKeluaran.CurrentCell.Value.ToString();btEdit.Enabled = true;btHapus.Enabled = true;

}else{

// reset id dan disable tombol editid = "";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 datagridif (id.Trim() != ""){

// set mode pengelolaanformKelola = new FormPengelolaan("edit", id);

Page 10: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 10/30

 

// form pengelolaan mereferensi form utamaformKelola.FormUtamaRef = this;

// tampilkan form pengelolaanformKelola.ShowDialog();

}}

private void btTambah_Click(object sender, EventArgs e){

// set mode pengelolaan// argumen null diberikan karena untuk menambah data tidak

diperlukan nomor idformKelola = new FormPengelolaan("tambah", null);

// form pengelolaan mereferensi form utamaformKelola.FormUtamaRef = this;

// tampilkan form pengelolaan

formKelola.ShowDialog();}

private void btHapus_Click(object sender, EventArgs e){

// pastikan pengguna telah memilih no. id dari datagridif (id.Trim() != ""){

// dapatkan konfirmasi dari penggunaDialogResult konfirmasi = MessageBox.Show("Hapus Data Ini...?",

"Perhatian !", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);

// konfirmasi untuk menghapus

if (konfirmasi == DialogResult.OK){// hapus data terpilihkoneksi.SqlQuery("DELETE FROM city WHERE id = " + id + " LIMIT

1");

try{

koneksi.MyCmd.ExecuteNonQuery();

// proses hapus OKMessageBox.Show("Data telah dihapus !", "Hapus OK",

MessageBoxButtons.OK, MessageBoxIcon.Information);}

catch (MySqlException err){

MessageBox.Show("MySQL ERROR : " + err.Message, "SQLERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

}catch (Exception err){

MessageBox.Show("PROGRAM ERROR : " + err.Message, "PROGRAMERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

Page 11: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 11/30

 

// tutup koneksikoneksi.Konektor.Close();

// update grid setelah terjadi perubahanUpdateDataGrid();

}}

}

public void UpdateDataGrid(){

// update datagriddataSet.Clear();

// lakukan query selectkoneksi.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, countryWHERE city.countrycode = country.code ORDER BY country.name ASC");

try{

MySqlDataAdapter sqlAdapter = newMySqlDataAdapter(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, "PROGRAMERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

// tutup koneksikoneksi.Konektor.Close();

}}

}

 

Penjelasan file FormUtama.cs

Statemen :

 private KoneksiServer koneksi = new KoneksiServer();

Page 12: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 12/30

 

merupakan statemen untuk melakukan koneksi ke server MySQL. KoneksiServer merupakan kelas

yang didefinisikan pada file KoneksiServer.cs

Statemen :

 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.

Statemen :

 private FormPengelolaan formKelola;

Karena aplikasi ini memiliki form pengelolaan tersendiri, maka statemen di atas perlu dituliskan.

Statemen :

 private string id = “”;

merupakan variabel untuk menyimpan nomor id data tabel. Nilai pada variabel ini nantinyadigunakan 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.

Page 13: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 13/30

 

Statemen :

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.

Statemen :

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.

Statemen :

formKelola.ShowDialog();

 berguna untuk menampilkan formKelola dari formUtama. Form utama tidak akan bisa diakses

sebelum formKelola ditutup.

Statemen :

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 terhadapquery yang dilampirkan pada argumennya.

Statemen :

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();

………

}

Page 14: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 14/30

 

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 inimerupakan 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 MySQLMenggunakan 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 sepertigambar berikut :

 

Setelah itu atur property dari masing-masing komponen sebagai berikut :

Page 15: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 15/30

 

 

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 serverprivate KoneksiServer koneksi = new KoneksiServer();private FormUtama formUtamaRef;private MySqlDataReader dataReader;

Page 16: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 16/30

 

private bool isTambah;private string id;

public FormPengelolaan(string mode, string id){

InitializeComponent();

// dapatkan nama negaraAmbilNegara();

// mode query untuk tambah atau editif (mode.ToLower() == "tambah"){

// set variabel bahwa pengguna telah menekan tombol tambah// judul form juga diubahisTambah = true;this.Text += " [Tambah]";

}else // edit{

isTambah = false;this.Text += " [Edit]";this.id = id;

// tampilkan data dari database ke textboxTampilkanDataTerpilih();

}}

private void btReset_Click(object sender, EventArgs e){

// reset semua masukkantxtKota.Text = "";

txtProvinsi.Text = "";txtPopulasi.Text = "";cmbNegara.Text = "";

}

private void btBatal_Click(object sender, EventArgs e){

// batal edit / tambah, keluar form pengelolaanthis.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 OKelse{

Page 17: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 17/30

 

try{

// mode tambah dataif (isTambah){

// sql penambahan data dari masukkan penggunakoneksi.SqlQuery("INSERT INTO city(name, countrycode,

district, population)" +" VALUES('" + txtKota.Text + "', '" + AmbilKodeNegara() +

"', '" + txtProvinsi.Text + "', " + txtPopulasi.Text + ")");

// eksekusi sql untuk tambah datakoneksi.MyCmd.ExecuteNonQuery();

// proses tambah OKMessageBox.Show("Data telah ditambahkan.", "Input OK",

MessageBoxButtons.OK, MessageBoxIcon.Information);}

// mode edit data

else{

// sql update data dari masukkan pengunakoneksi.SqlQuery("UPDATE city SET name = '" + txtKota.Text

+ "', countrycode = '" + AmbilKodeNegara() + "'," +" district = '" + txtProvinsi.Text + "', population = "

+ txtPopulasi.Text + " WHERE id = " + id);

// eksekusi sql untuk edit datakoneksi.MyCmd.ExecuteNonQuery();

// proses edit OKMessageBox.Show("Data telah diubah.", "Edit OK",

MessageBoxButtons.OK, MessageBoxIcon.Information);}

// tutup koneksikoneksi.Konektor.Close();

// update grid setelah terjadi perubahanformUtamaRef.UpdateDataGrid();

// tutup formthis.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, "PROGRAMERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

}}

}

Page 18: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 18/30

 

public void AmbilNegara(){

// ambil nama negara tanpa duplikasikoneksi.SqlQuery("SELECT DISTINCT name FROM country ORDER BY name

ASC");

try{

dataReader = koneksi.MyCmd.ExecuteReader();

// ambil nama negara dan masukkan ke dalam item milik comboboxwhile (dataReader.Read()){

cmbNegara.Items.Add(dataReader.GetString("name"));}

// tutup dataReaderdataReader.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, "PROGRAMERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

// tutup koneksikoneksi.Konektor.Close();

}

public string AmbilKodeNegara(){

koneksi.SqlQuery("SELECT code FROM country WHERE name = '" +cmbNegara.SelectedItem.ToString() + "' LIMIT 1");

// dapatkan data tunggalobject kodeNegara = koneksi.MyCmd.ExecuteScalar();return kodeNegara.ToString();

}

public void TampilkanDataTerpilih(){

// tampilkan data yang perlu dieditkoneksi.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

Page 19: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 19/30

 

if (dataReader.Read()){

txtKota.Text = dataReader.GetString("kota");txtProvinsi.Text = dataReader.GetString("district");txtPopulasi.Text = dataReader.GetString("population");cmbNegara.SelectedItem = dataReader.GetString("negara");

}

// tutup dataReaderdataReader.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, "PROGRAMERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

// tutup koneksikoneksi.Konektor.Close();

}

// mendapatkan semua nilai dari form utamapublic FormUtama FormUtamaRef{

get { return formUtamaRef; }set { formUtamaRef = value; }

}}

}

 

Penjelasan file FormPengelolaan.cs

Statemen :

 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.

Page 20: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 20/30

 

Statemen :

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 kodenegara dari nama negara yang ditampilkan pada items combobox.

Statemen :

koneksi.MyCmd.ExecuteNonQuery();

Akan melakukan proses eksekusi query insert di atas.

Statemen :

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.

Statemen :

Page 21: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 21/30

 

dataReader = koneksi.MyCmd.ExecuteReader();

 berfungsi untuk mendapatkan data-data hasil query.

Statemen :

while (dataReader.Read())

{

cmbNegara.Items.Add(dataReader.GetString(”name”));

}

 berfungsi untuk mendapatkan semua data query dengan nama field name kemudian memasukkannilainya ke items milik combobox. Proses tersebut akan berhenti jika Method Read() bernilai false

yang berarti data telah habis dibaca.

Method / Statemen :

 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 akandimasukkan 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()

{

Page 22: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 22/30

 

…………….

}

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.

Statemen :

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 argumendataReader.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 cukupklik 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 diturunkandari kelas Form, jadi kelas ini tidak memiliki tampilan form windows.

Berikut kode program dari kelas KoneksiServer :

Page 23: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 23/30

 

 

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 Serverpublic class KoneksiServer{

// definisi data koneksiprivate string host = "localhost";private string username = "root";private string password = "";private string database = "world";

// deklarasi variabel untuk keperluan operasi MySQLprivate MySqlCommand myCmd;private MySqlConnection konektor;

// inisialisasi koneksipublic void SqlQuery(string sql){

// objek untuk keperluan penulisan dan operasi sqlmyCmd = new MySqlCommand();

// coba lakukan koneksi ke servertry{

konektor = new MySqlConnection("datasource=" + host + ";" +"username=" + username + ";" +"password=" + password + ";" +"database=" + database);

// buka koneksikonektor.Open();

Page 24: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 24/30

 

// eksekusi perintah querymyCmd.CommandText = sql;myCmd.Connection = konektor;

}catch (MySqlException err){

// tutup koneksi ketika terjadi kegagalankonektor.Close();MessageBox.Show("MySQL ERROR : " + err.Message, "Gagal Koneksi",

MessageBoxButtons.OK, MessageBoxIcon.Error);}catch (Exception err){

MessageBox.Show("PROGRAM ERROR : " + err.Message, "PROGRAMERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

}}

// dapatkan dan set objek dari MySqlCommandpublic MySqlCommand MyCmd

{get { return myCmd; }set { myCmd= value; }

}

// dapatkan objek dari MySqlConnectionpublic MySqlConnection Konektor{

get { return konektor; }}

}}

 

Penjelasan file KoneksiServer.cs

Statemen :

 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.

Statemen :

konektor = new MySqlConnection(”datasource=” + host + “;” +

“username=” + username + “;” +

Page 25: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 25/30

 

“password=” + password + “;” +

“database=” + database);

konektor.Open();

 berguna untuk melakukan koneksi ke server database MySQL, kemudian buka koneksi tersebut.

Statemen :

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

Page 26: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 26/30

 

1. Tombol Tampil Ditekan

Page 27: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 27/30

 

2. Tombol Tambah Ditekan (Form Pengelolaan tampil)

3. Hasil Perubahan Setelah Tambah Data

Page 28: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 28/30

 

4. Tombol Edit Ditekan (Form Pengelolaan tampil)

Page 29: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 29/30

 

5. Tombol Hapus Ditekan (Dialog Konfirmasi tampil)

6. Database “world” Belum Dibuat (ERROR TEST)

Page 30: 31350323 c Dengan Mysql

5/14/2018 31350323 c Dengan Mysql - slidepdf.com

http://slidepdf.com/reader/full/31350323-c-dengan-mysql 30/30

 

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 Andatahu 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”