Koneksi MySQL dengan VB .Net 2010
Yup…sering kali lupa dan cari lagi…kali ini saya posting cara koneksi antara Database MySQL dengan
VB .Net 2010, semoga dengan ini bisa ingat sepanjang jaman ya…^__^
Baik, pertama kali apa saja yang diperlukan:
1. MySQL Server, dalam contoh saya menggunakan XAMPP 1.7.3
2. MySQL Connector, dalam contoh saya menggunakan versi 6.5.4
3. VB .Net, dalam contoh saya menggunakan yang 2010
4. Windows XP 32 bit
Agar mudah, dalam melakukan koneksi dan operasi selanjutnya (yang berhubungan dengan database) kita gunakan Module.
Baik, langkah pertama tambahkan Module dalam Project baru di VB .Net 2010
Caranya mudah, Klik kanan di Nama Project yang terletak di Solution Explorer
> Add > Module
seperti gambar berikut :
Beri nama sembarang, dalam contoh nama module saya adalah : "modulkust" Langkah kedua,
Add Reference (JANGAN LUPA INSTALL MYSQL CONNECTOR – nya),
caranya mirip dengan menambahkan modul, di
Solution Explorer klik kanan Nama Project & Add Reference Pindah ke Tab Browse,
lalu arahkan ke folder anda menginstall MySQL Connector, seperti dalam path berikut :
C:\Program Files\MySQL\MySQL Connector Net 6.5.4\Assemblies\v4.0
Select semua File (3 File), klik OK. Beres? belum dunk,
deklarasikan variabel berikut :
Dim serv As String = “Server=localhost;”
Dim dbase As String = “Database=jualan;”
Dim uid As String = “uid=root;”
Dim pwd As String = “pwd=”
Apa tuh Fungsinya? ke 4 Variabel String diatas berguna untuk menentukan parameter-parameter yang di
butuhkan untuk membentuk koneksi ke MySQL, yang
- Pertama adalah Server yang menjalankannya,
dalam contoh ini saya menggunakan XAMPP, jadi Server bisa diisi dengan localhost.
- Kedua adalah nama database yang digunakan aplikasi yang sedang kita bangun,
dalam contoh saya gunakan database bernama jualan.
- Ketiga dan empat adalah user id dan password yang digunakan untuk koneksi,
seperti yang terlihat, dalam contoh ini user = root dan pass adalah kosong.
Masalah menentukan user dan password tergantung pada waktu kita mengInstall XAMPP
di Computer kita
Untuk yg pakai LAN , misal Servernya ada di IP Adreess : 192.168.1.8
maka localhost diganti : 192.168.1.8
Sesuaikan parameter-parameter diatas dengan setting pada PC tempat database berada.
Selanjutnya tambahkan 2 variabel berikut:
Dim ConString = serv & dbase & uid & pwd
Public db As New MySqlConnection(ConString)
Ada lagi, apalagi tuh? nah yang pertama adalah susunan Connection String alias String untuk koneksi
dengan database MySQL, seperti yang terlihat sebenarnya formatnya adalah
“Server;Database;UserID;Password”.
Sudah tahu kan dengan ini apa fungsi deklarasi 4 variabel penyusun diatas tadi?
Yup, keempatnya digabung (concat) dengan menggunakan operator “&” untuk membentuk satu
String Koneksi. Yang kedua adalah variabel untuk mewakili database yang telah dibentuk koneksinya.
Seharusnya saat ini terjadi error, pemecahannya lakukan import satu baris berikut :
Imports MySql.Data.MySqlClient
Yup, import satu baris di atas tidak akan bisa dilakukan jika kita tidak melakukan
add reference di awal tadi…
Persiapan tahap awal sudah beres, berikutnya kita akan membentuk function/procedure untuk
melakukan koneksi dan mengakhiri koneksi. Untuk mengakhiri koneksi tuliskan procedure berikut :
Public Sub tutupDB()
If db.State = ConnectionState.Open Then
db.Close()
End If
End Sub
Penjelasan? OK2…pasti ada koq…^^…db.State = bla..bla.. then digunakan untuk memeriksa status
koneksi apakah sedang terbuka atau tidak, jika ya tutup dengan syntax db.close() .
Jangan lupa, variabel db adalah variabel yang kita gunakan untuk mewakili database yang telah
terbentuk koneksinya.
Lalu untuk koneksinya ? nih…:
Public Sub konek()
Try
tutupDB()
db.Open()
Catch ex As MySqlException
MsgBox(ex.Message)
End Try
End Sub
Minta penjelasan lagi? Iya…iya…pertama, apa itu Try – Catch?
Mudahnya, agar jika operasi dalam jualan Try gagal dilakukan, program tidak keluar tanpa pesan, atau
ketidakjelasan sehingga kita sulit mengidentifikasi letak masalah.
Selain itu, jika kita memikirkan pengguna, kasihan kan jika mereka tiba-tiba langsung diKick tanpa
keterangan yang yaa…sebenarnya juga tidak terlalu membantu…;p
Nah, dengan Try – Catch ini, jika operasi dalam jualan Try gagal dilaksanakan, maka aplikasi akan
mencoba menjalankan operasi yang ada dalam jualan Catch,
dalam contoh diberikan MsgBox(ex.Message) dimana ini berguna untuk menampilkan pesan pop-up
berisi Error atau masalah yang terjadi.
Nah, pesan ini bisa diganti dengan String sesuka pengembang, terutama jika nanti diterapkan untuk
pengguna dengan cara mengubah isinya menjadi MsgBox(“Pesan untuk Pengguna”),
gimana sip toh? Selipkan juga dalam Blok Try sebagai penanda bahwa koneksi berhasil dilakukan.
Sehingga isi keseluruhan file Module kita seperti berikut :
Imports MySql.Data.MySqlClient
Imports System.Data
Module modulkust
Public cmd As New MySqlCommand
Public dadapter As New MySqlDataAdapter
Public datardr As MySqlDataReader
Public strSql As String
Dim serv As String = "Server=localhost;"
Dim dbase As String = "Database=jualan;"
Dim uid As String = "uid=root;"
Dim pwd As String = "pwd=;"
Dim ConString = serv & dbase & uid & pwd
Public db As New MySqlConnection(ConString)
Public Sub konek()
Try
tutupDB()
db.Open()
MsgBox("Koneksi DataBase berhasil dilakukan")
Catch ex As MySqlException
MsgBox(ex.Message)
MsgBox("Koneksi tidak berhasil dilakukan")
End Try
End Sub
Public Sub tutupDB()
If db.State = ConnectionState.Open Then
db.Close()
End If
End Sub
End Module
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs)
tutupDB()
End Sub
Private Sub btnkonek_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnkonek.Click
konek()
End Sub
' sub program ini di panggil sewaktu2 bila perlu --> TampilData()
Private Sub TampilData()
Dim da As New MySqlDataAdapter("select * from customer", db)
Dim dt As New DataTable
da.Fill(dt)
dgv.DataSource = dt
End Sub
Private Sub BersihData()
txtnama.Text = ""
txtalamat.Text = ""
txtkota.Text = ""
txttelpon.Text = ""
txtemail.Text = ""
txthp.Text = ""
cbkelamin.Text = ""
End Sub
Private Sub DisplayData()
Dim da As New MySqlDataAdapter("SELECT * FROM customer WHERE customercode ='" & txtkdcust.Text & "'", db)
Dim dt As New DataTable
da.Fill(dt)
dgv.DataSource = dt
End Sub
Private Sub CekData()
Try
tutupDB()
db.Open()
Catch ex As MySqlException
MsgBox(ex.Message)
MsgBox("Koneksi tidak berhasil dilakukan")
Exit Sub
End Try
Try
strSql = "SELECT * FROM customer WHERE customercode ='" & txtkdcust.Text & "'"
cmd.CommandText = strSql
cmd.Connection = db
dadapter.SelectCommand = cmd
datardr = cmd.ExecuteReader
If datardr.HasRows Then
datardr.Read()
txtnama.Text = datardr("customername")
txtalamat.Text = datardr("alamat")
txtkota.Text = datardr("kota")
txttelpon.Text = datardr("telp")
txtemail.Text = datardr("email")
txtmclc.Text = datardr("custlevelcode")
txthp.Text = datardr("hp")
cbkelamin.Text = datardr("jkelamin")
txttlahir.Text = datardr("tempatlahir")
cbstatus.Text = datardr("pekerjaan")
dtpawal.Value = datardr("startdate")
dtpexpired.Value = datardr("enddate")
dtplahir.Value = datardr("tgllahir")
If txtmclc.Text = "011" Then
cbpelanggan.Text = "Member Global"
ElseIf txtmclc.Text = "022" Then
cbpelanggan.Text = "Agent"
ElseIf txtmclc.Text = "025" Then
cbpelanggan.Text = "Sub Agent"
End If
txtalamat.Focus()
MsgBox("Data dari Table Ditemukan....!", MsgBoxStyle.Exclamation, "Perhatian")
Else
MsgBox("Data Tables Tidak Ditemukan....!", MsgBoxStyle.Exclamation, "Informasi")
BersihData()
End If
' db.Close()
Catch ex As Exception
End Try
End Sub
' input Kode Customer lalu tekan Enter
Private Sub txtkdcust_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtkdcust.KeyPress
If e.KeyChar = Chr(13) Then
CekData()
cbkelamin.Focus()
End If
End Sub
' Program di jalankan langsung jalankan sub ini:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TampilData()
End Sub
' Ini Sub untuk button Simpan
Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click
Try
tutupDB()
db.Open()
Catch ex As MySqlException
MsgBox(ex.Message)
MsgBox("Koneksi tidak berhasil dilakukan")
Exit Sub
End Try
' ini untuk ngecek Data apa sdh pernah di rekam atau belum
Try
strSql = "SELECT * FROM customer WHERE customercode ='" & txtkdcust.Text & "'"
cmd.CommandText = strSql
cmd.Connection = db
dadapter.SelectCommand = cmd
datardr = cmd.ExecuteReader
If datardr.HasRows Then
datardr.Read()
' txtWarna.Text = datardr("Warna")
MsgBox("Data tersebut pernah di Rekam....!", MsgBoxStyle.Exclamation, "Perhatian")
Exit Sub
End If
Catch ex As Exception
End Try
' ini untuk simpan data ke MySql
Try
konek()
Dim cmd As New MySqlCommand("insert into customer(customercode,customername,alamat,kota,custlevelcode,email,hp,jkelamin,startdate,enddate,tempatlahir,tgllahir,pekerjaan,telp) values('" & txtkdcust.Text & "','" & txtnama.Text & "','" & txtalamat.Text & "','" & txtkota.Text & "','" & txtmclc.Text & "','" & txtemail.Text & "','" & txthp.Text & "','" & cbkelamin.Text & "','" & Format(dtpawal.Value, "yyyy-MM-dd HH:mm:ss") & "','" & Format(dtpexpired.Value, "yyyy-MM-dd HH:mm:ss") & "','" & txttlahir.Text & "','" & Format(dtplahir.Value, "yyyy-MM-dd") & "','" & cbstatus.Text & "','" & txttelpon.Text & "')", db)
cmd.ExecuteNonQuery()
DisplayData()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
' Ini untuk Merubah atau Update
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
konek()
Dim cmdb As New MySqlCommand(("update customer set customername='" & txtnama.Text & "',alamat ='" & txtalamat.Text & "',kota ='" & txtkota.Text & "',email ='" & txtemail.Text & "',pekerjaan ='" & cbstatus.Text & "',tempatlahir ='" & txttlahir.Text & "',tgllahir ='" & Format(dtplahir.Value, "yyyy-MM-dd") & "',telp ='" & txttelpon.Text & "',hp ='" & txthp.Text & "',startdate ='" & Format(dtpawal.Value, "yyyy-MM-dd HH:mm:ss") & "',enddate ='" & Format(dtpexpired.Value, "yyyy-MM-dd HH:mm:ss") & "',jkelamin ='" & cbkelamin.Text & "' WHERE customercode ='" & txtkdcust.Text & "'"), db)
cmdb.ExecuteNonQuery()
DisplayData()
End Sub
' ini untuk Combo box Pelanggan - Tombol Enter
Private Sub cbpelanggan_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cbpelanggan.KeyPress
If e.KeyChar = Chr(13) Then
If cbpelanggan.Text = "Member Global" Then
cbpelanggan.Text = "Member Global"
txtmclc.Text = "011"
txtalamat.Focus()
ElseIf cbpelanggan.Text = "Agent" Then
cbpelanggan.Text = "Agent"
txtmclc.Text = "022"
txtalamat.Focus()
ElseIf cbpelanggan.Text = "Sub Agent" Then
cbpelanggan.Text = "Sub Agent"
txtmclc.Text = "025"
txtalamat.Focus()
Else
cbpelanggan.Focus()
End If
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Jenis Kelamin
Private Sub cbkelamin_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cbkelamin.KeyPress
If e.KeyChar = Chr(13) Then
If cbkelamin.Text = "Laki - laki" Then
cbkelamin.Text = "Laki - laki"
txtnama.Focus()
ElseIf cbkelamin.Text = "Perempuan" Then
cbkelamin.Text = "Perempuan"
txtnama.Focus()
Else
cbkelamin.Focus()
End If
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Email
Private Sub txtemail_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtemail.KeyPress
If e.KeyChar = Chr(13) Then
txttelpon.Focus()
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Telpon
Private Sub txttelpon_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txttelpon.KeyPress
If e.KeyChar = Chr(13) Then
txthp.Focus()
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Nama
Private Sub txtnama_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtnama.KeyPress
If e.KeyChar = Chr(13) Then
cbpelanggan.Focus()
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Alamat
Private Sub txtalamat_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtalamat.KeyPress
If e.KeyChar = Chr(13) Then
txtkota.Focus()
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Kota
Private Sub txtkota_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtkota.KeyPress
If e.KeyChar = Chr(13) Then
txttlahir.Focus()
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Tempat Lahir
Private Sub txttlahir_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txttlahir.KeyPress
If e.KeyChar = Chr(13) Then
cbstatus.Focus()
End If
End Sub
' Ini untuk Sub Tombol Enter untukPekerjaan
Private Sub cbstatus_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cbstatus.KeyPress
If e.KeyChar = Chr(13) Then
If cbstatus.Text = "SMA" Then
cbstatus.Text = "SMA"
dtplahir.Focus()
ElseIf cbstatus.Text = "MAHASISWA" Then
cbstatus.Text = "MAHASISWA"
dtplahir.Focus()
ElseIf cbstatus.Text = "PNS" Then
cbstatus.Text = "PNS"
dtplahir.Focus()
ElseIf cbstatus.Text = "PEG SWASTA" Then
cbstatus.Text = "PEG SWASTA"
dtplahir.Focus()
ElseIf cbstatus.Text = "WIRASWASTA" Then
cbstatus.Text = "WIRASWASTA"
dtplahir.Focus()
Else
cbstatus.Focus()
End If
End If
End Sub
' Ini untuk Sub Tombol Enter untuk Tanggal Lahir
Private Sub dtplahir_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles dtplahir.KeyPress
If e.KeyChar = Chr(13) Then
txtemail.Focus()
End If
End Sub
' Ini untuk Tombol Button Cari
Private Sub btnCari_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCari.Click
CekData()
End Sub
' Ini untuk Tombol Button Bersihkan
Private Sub btnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBatal.Click
BersihData()
txtkdcust.Focus()
End Sub
End Class
Contoh yg sdh jalan :
makasih tutorial.y..
BalasHapusyang ingin sy tanyakan seperti ini:
1)
kalau program sudah jadi dan akan dijalankan di komputer lain apakah harus menginstall sqlserver semacam xammp atau tidak perlu??
2)
kalau seandainya tidak perlu menginstall sqlserver, bgmana mendeklarasikan "Dim serv As String = “Server=localhost;” "??
terima kasih sbelumnya atas jawabannya.
Trmksh Mas Osamaru ya Mas tetap harus di install Xampp nya karena itu sebagai Database nya
HapusSelama ini saya install di Computer server saja misal server nya : IP address nya : 192.168.1.5
maka declare nya disesuaikan
untuk LAN kan enak database nya (MYSQL) cukup di server saja jadi tetep harus di INstall
mas, ko g ada keterangan nama2 dari textbox nya.....
BalasHapustrus yang tgl lahir itu pake apa?? date time picker atau apa??
Gan,, Ada gak yg project nya siap download??
BalasHapus:)
Thanks baungat bro, cuma kenapa bro cmdb.ExecuteNonQuery() saat tekan tombol Update, tidak berfungsi ya? malah muncul, duplucate primari key.
BalasHapusThanks atas pencerahanya.