Tutorial CRUD VB.NET dengan MySQL
Tutorial CRUD VB.NET dengan MySQL
Buatlah Project baru dengan Nama CRUD, buat Form baru dengan
nama [Link], buat design FrmUtama seperti gambar berikut :
Buatlah Module koneksi ke database yang sudah anda buat, baca Tutorial [Link] :
Koneksi Database MySQL, Buatlah Module baru dengan nama MdlKoneksi, dan
pastekan Code berikut :
Imports [Link]
Imports [Link]
Imports [Link]
Imports [Link]
Imports [Link]
Module MdlKoneksi
Public konek As OdbcConnection
Public DA As OdbcDataAdapter
Public DR As OdbcDataReader
Public DS As DataSet
Public CMD As OdbcCommand
Sub bukaDB()
Try
konek = New
OdbcConnection("DSN=crud;MultipleActiveResultSets=True")
If [Link] = [Link] Then
[Link]()
End If
Catch ex As Exception
MsgBox("konek Kedatabase Bermasalah, Periksa koneksi Jaringan
Anda")
End Try
End Sub
End Module
Kode untuk tombol Tambah
Sub isigrid()
bukaDB()
DA = New [Link]("SELECT * FROM biodata", konek)
DS = New DataSet
[Link]()
[Link](DS, "biodata")
[Link] = ([Link]("biodata"))
[Link] = True
End Sub
Code Isi Data Dari Gridview Ke TextBox
[Link](x).Cells(6).Value)
[Link] = [Link](x).Cells(7).Value
[Link] = [Link](x).Cells(8).Value
[Link] = [Link](x).Cells(9).Value
Catch ex As Exception
End Try
End Sub
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As
[Link]) Handles
[Link]
isiTextBox([Link])
DATABARU = False
End Sub
Code untuk Frm Load
Setelah terbengkalai sekian lama menunggu mood hehe... mari kita mulai membahas bagaimana proses
CRUD pada [Link] dan MySQL.
Pastikan udah baca dulu artikel sebelumnya yah No 1 s/d 3.
Pertama-tama kita siapkan tombol-tombol pendukungnya, yaitu Save, Edit, Delete, Cancel, dan Exit.
Pada contoh di sini Rani buat tombol nya pakai ToolStrip Control.
Deklarasikan sebuah objek koneksi dan sebuah variable string untuk menyimpan query di dalam Class
Form (Rani kasih nama form nya frmClass)
Public Class frmClass
Dim conn As MySqlConnection
Dim SQL As String
End Class
Kemudian kita akan membuat sub procedure bernama Data_Load untuk menampilkan data ke dalam
datagridview. Pastikan untuk menyimpan procedure ini di dalam class form. Pada sub procedure ini juga
Rani menambahkan Try Catch sebagai error handling.
Sub Data_Load()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
[Link] = conn
[Link] = SQL
[Link] = myCommand
[Link](myData)
With grdData
.DataSource = myData
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
Kita perlu menampilkan data ke dalam grid saat pertama form dibuka, karena itu kita akan memanggil
sub procedure Data_Load pada event Form_Load
Private Sub frmClass_Load(ByVal sender As Object, _
ByVal e As [Link]) Handles [Link]
Data_Load()
End Sub
Lanjuuut.... kita akan membuat procedure untuk membuat data baru. User akan memasukan data pada
textbox kode dan nama, kemudian klik toolbar Save untuk menyimpan data baru ke database. Berikut
code yang ditulis pada event tblSave_Click.
Private Sub tbrSave_Click(ByVal sender As [Link], _
ByVal e As [Link]) Handles [Link]
[Link] = conn
[Link] = SQL
[Link]()
[Link] = [Link]
[Link] = [Link]
Data_Load()
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
Sebuah message box (pesan) ditambahkan setelah proses insert sebagai penanda jika proses input data
baru telah berhasil. Procedure Data_Load dipanggil lagi kemudian agar perubahan dapat ditampilkan di
grid.
Mari kita coba dulu menjalankan form dan menginput sebuah data baru.
[Link] MySQL: Create, Read, Update, Delete (CRUD) - Part 2
Posted by rani irsan | 4/14/2015 | [Link] MySQL
Next step, kita mau buat fasiltas buat edit/mengubah data yang sudah ada. Bagaimana user mengedit
data? Pertama mereka akan memilih data yang ada di grid, kemudian melakukan double klik untuk
menampilkan data yang akan di edit di control input (textbox). Maka kita akan membuat code berikut
pada event grdData_CellMouseDoubleClick.
[Link] = [Link](0).Value
[Link] = [Link](1).Value
[Link] = False
[Link] = True
End Sub
Kita menambahkan [Link] = True, untuk mengunci kode agar tidak dapat diedit karena
merupakan primary key. Selain dapat langsung double klik pada grid, user juga dapat memilih row data
kemudian klik tombol Edit, maka perlu procedure yang sama pada event tbrEdit_Click. Tapi kita tidak
akan mengetik ulang code melainkan memanggil sub procedure event CellMouseDoubleClick seperti
berikut:
grdData_CellMouseDoubleClick(Nothing, Nothing)
End Sub
Oiya sebelum lanjut ke Saving perubahan, kita tambahkan dulu code di event tbrCancel_Click dulu yah.
Karena procedure ini akan dipanggil beberapa kali. Fungsinya adalah untuk membersihkan control input,
refresh ulang data, dan membatalkan proses input baru/edit selama belum di Save.
Code [Link] = False sebagai parameter pembeda, apakah status input sedang input baru atau
sedang edit data. Karena untuk menyimpan perubahan menggunakan event yang sama yaitu
tbrSave_Click. Kita akan mengubah dan menambahkan beberapa code pada event ini. (Rani tandai
dengan highlight perubahannya yah)
[Link] = conn
[Link] = SQL
[Link]()
tbrCancel_Click(Nothing, Nothing)
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
Makasih yah udah betah mantengin artikel-artikel nya Rani. Artikel ini lanjutan dari Part 2.
User memilih baris mana yang akan dihapus kemudian klik tombol Delete. Jadi kita akan membuat
prosedure berikut pada event tbrDelete_Click. Sebelum menghapus data diberikan pesan konfirmasi
proses hapus terlebih dahulu.
[Link] = conn
[Link] = SQL
[Link]()
MsgBox("Data terhapus")
tbrCancel_Click(Nothing, Nothing)
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
Imports [Link]
Imports [Link]
Sub Data_Load()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
[Link] = conn
[Link] = SQL
[Link] = myCommand
[Link](myData)
With grdData
.DataSource = myData
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
[Link] = conn
[Link] = SQL
[Link]()
tbrCancel_Click(Nothing, Nothing)
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
Private Sub grdData_CellMouseDoubleClick(ByVal sender As Object, _
ByVal e As [Link]) _
Handles [Link]
[Link] = [Link](0).Value
[Link] = [Link](1).Value
[Link] = False
[Link] = True
End Sub
grdData_CellMouseDoubleClick(Nothing, Nothing)
End Sub
[Link] = conn
[Link] = SQL
[Link]()
MsgBox("Data terhapus")
tbrCancel_Click(Nothing, Nothing)
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
End Class
Selanjutnya kita akan mencoba menampilkan isi table kategori pada database latihan ke DataGridView di
aplikasi [Link]
Query yang digunakan:
Isi table:
Atur tampilan form sebagai berikut, dengan menambahkan control DataGridView yang diberinama
grdData.
Kemudian atur code sebagai berikut:
Imports [Link]
Imports [Link]
Public Class Form1
Dim conn As MySqlConnection
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String
[Link] = conn
[Link] = SQL
[Link] = myCommand
[Link](myData)
[Link] = myData
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
End Class
Cobalah untuk run/debug aplikasi. Maka data kategori akan tampil di datagridview.
============
Bagaimana cara import data dari excel ke database MySQL dengan menggunakan [Link]?
Bicara tentang import data dari excel dengan database apapunnya, gampang-gampang susah.
Kita bisa bilang gampang kan klo udah tau cara/solusinya hehe...
Catatan penting: yang jadi riskan error adalah validasi data. Bentuk dan isi data excel harus benar-benar
sesuai, klo ngga yaaaa error. Lebih lanjut tentang validasi belakangan aja yah.
Rani juga anggap readers udah paham tentang [Link] & MySQL, jadi tau apa aja yang harus add
reference dll. Klo belum baca dulu Tutorial nya yah.
Nah bahasan disini Rani batasi dengan asumsi kondisi data excel valid dan sesuai. Berikut struktur tabel
tblKaryawan beserta isinya sebelum proses import.
TextBox1 digunakan untuk menyimpan path dan nama file excel yang akan digunakan, Button1 untuk
browse file, dan Button 2 untuk proses import. ListBox1 untuk menyimpan nama-nama sheet. Label1
keterangan data excel dan Label2 untuk keterangan data MySQL. DataGridView1 untuk menampilkan
data tabel dari excel sementara DataGridView2 untuk menampilkan data dari MySQL.
Selesai dengan UI, lanjut ke Code. Pertama Import Class yang digunakan.
Imports [Link]
Imports [Link]
Imports [Link]
Imports [Link]
Kemudian deklarasikan object data untuk digunakan di Class frmImportExcel.
Dim conn As New MySqlConnection
Dim strConn As String = "server=localhost;user id=root;" & _
"password=xxxx;database=latihan"
Dim tblImport As DataTable
Try
[Link]()
SQL = "Select nik, nama From tblkaryawan"
[Link] = conn
[Link] = SQL
[Link] = myCommand
[Link](myData)
[Link] = myData
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
Sub procedure di atas akan dipanggil di event Form_Load. Event ini juga memuat pengaturan connection
string dan beberapa pengaturan property UI.
Private Sub frmImportExcel_Load(ByVal sender As [Link], _
ByVal e As [Link]) Handles [Link]
[Link] = True
[Link] = "Browse..."
[Link] = False
[Link] = "Import"
[Link] = "Data Excel"
[Link] = "Data MySQL"
With DataGridView1
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
With DataGridView2
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
[Link] = strConn
MySQLDataLoad()
End Sub
Kemudian kita siapkan juga 2 buah procedure untuk menampilkan data excel, termasuk pilihan sheet dan
isi tabel. Isi tabel excel akan disimpan dalam object DataTable dengan nama tblImport.
'Untuk menampilkan data sheet di grid
Sub LoadExcel2Grid(ByVal FileName As String, ByVal SheetName As String)
Dim exConn As OleDbConnection
Dim dt As DataSet
Dim cmd As OleDbDataAdapter
[Link]()
End Sub
[Link]()
[Link]()
For Each drSheet In [Link]
[Link](drSheet("TABLE_NAME").ToString())
Next
LoadExcel2Grid(FileName, [Link](0).ToString)
[Link]()
End Sub
[Link] MySQL: Import Data dari Excel - Part 2
Posted by rani irsan | 4/22/2015 | [Link] MySQL
Untuk mencari file (browse) kita menggunakan event Button1_Click, jika file excel terpilih maka secara
otomatis data di sheet pertama akan tampil di grid.
Private Sub Button1_Click(ByVal sender As [Link], _
ByVal e As [Link]) Handles [Link]
With OpenFileDialog1
.FileName = [Link]
.InitialDirectory = "C:\"
.Title = "Open Excel File"
.Filter = "Excel 97-2003|*.xls|Excel 2007|*.xlsx"
End With
End Sub
Kita juga akan memanggil procedure untuk menampilkan data di grid setiap pilihan sheet di ListBox1
berubah.
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As [Link], _
ByVal e As [Link]) Handles [Link]
LoadExcel2Grid([Link], [Link])
End Sub
Event TextBox1_TextChanged menjadi parameter perubahan file excel terpilih, jika terdapat file excel
yang terpilih maka Button2 akan aktif.
Private Sub TextBox1_TextChanged(ByVal sender As [Link], _
ByVal e As [Link]) Handles [Link]
[Link] = (Len([Link]) > 0)
End Sub
Sub Procedure DoInsert kita buat untuk proses insert data, query yang digunakan di contoh ini
adalah insert ignore. Query ini akan mengabaikan proses insert jika input dengan primary key yang sama
sudah ada.
Sub DoInsert(ByVal strNIK As String, ByVal strNama As String)
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String
Try
If [Link] = [Link] Then [Link]()
SQL = "INSERT IGNORE INTO tblKaryawan (nik, nama) VALUES " & _
"('" & strNIK & "', '" & strNama & "')"
[Link] = conn
[Link] = SQL
[Link]()
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
Event Button2_Click akan menjalankan proses migrasi, insert data akan diambil dari tblImport.
Private Sub Button2_Click(ByVal sender As [Link], _
ByVal e As [Link]) Handles [Link]
End Sub
Artikel ini masih merupakan artikel lanjutan dari Part2, yang akan menampilkan kode lengkap yang sudah
kita susun sebelumnya.
Imports [Link]
Imports [Link]
Imports [Link]
Imports [Link]
Try
[Link]()
SQL = "Select nik, nama From tblkaryawan"
[Link] = conn
[Link] = SQL
[Link] = myCommand
[Link](myData)
[Link] = myData
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
[Link] = True
[Link] = "Browse..."
[Link] = False
[Link] = "Import"
[Link] = "Data Excel"
[Link] = "Data MySQL"
With DataGridView1
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
With DataGridView2
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
[Link] = strConn
MySQLDataLoad()
End Sub
[Link]()
End Sub
[Link]()
[Link]()
For Each drSheet In [Link]
[Link](drSheet("TABLE_NAME").ToString())
Next
LoadExcel2Grid(FileName, [Link](0).ToString)
[Link]()
End Sub
With OpenFileDialog1
.FileName = [Link]
.InitialDirectory = "C:\"
.Title = "Open Excel File"
.Filter = "Excel 97-2003|*.xls|Excel 2007|*.xlsx"
End With
Dim result As DialogResult = [Link]()
If result = [Link] Then
Try
[Link] = [Link]
GetExcelSheetNames([Link])
Catch ex As Exception
MsgBox("Error : " & [Link])
End Try
End If
End Sub
End Sub
Try
If [Link] = [Link] Then [Link]()
SQL = "INSERT IGNORE INTO tblKaryawan (nik, nama) VALUES " & _
"('" & strNIK & "', '" & strNama & "')"
[Link] = conn
[Link] = SQL
[Link]()
[Link]()
Catch myerror As MySqlException
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
End Sub
End Class
[Link]: Menyimpan Setting Koneksi di User Setting
Posted by rani irsan | 5/16/2015 | [Link]
Dimanakah kita menyimpan setting koneksi supaya bisa lebih dinamis dan dapat disetting oleh user?
Aplikasi dengan framework .NET menyediakan fasilitas built in untuk menyimpan setting yang dapat
diakses dan diatur saat runtime. Sehingga user dapat mengubah setting tanpa harus melakukan compile
ulang aplikasi.
Untuk lebih jelas nya kita langsung saja buka Project Properties dengan cara klik menu Project -> [Nama
Project] Properties.
Saat Project Properties terbuka klik tab Setting yang ada disisi kiri. Terdapat 4 kolom isian untuk masing-
masing baris setting yaitu Name, Type, Scope, Value. Rani isikan setting-setting yang diperlukan untuk
koneksi sebagai berikut:
Name merupakan nama dari setting yang nantinya dapat dipanggil dari code.
Type adalah tipe data untuk nilai yang diisikan.
Scope terdiri dari 2 jenis User dan Application. Scope Application bersifat readonly (hanya bisa dibaca)
saat runtime sementara scope user readable dan writeble (bisa dibaca dan diganti). Karena disini kita
ingin user dapat mengatur sendiri setting maka dipilihlah Scope User. Setting ini akan tersimpan pada
level user account, karena itu jika user window login berbeda bisa memiliki setting berbeda pula.
Sementara value merupakan nilai default dari setting sebelum nanti user dapat mengubahnya.
Oke, lanjut.....
String koneksi adalah variable yang perlu diakses dari hampir seluruh bagian project karena itu mari kita
buat variable-variable public yang disimpan dalam sebuah module.
Klik Project -> Add Module...
End Module
Kemudian kita buat juga sebuah sub procedure public untung memberikan nilai pada variable-variable
tersebut yang diambil dari user setting. Bisa disimpan juga dalam module sehingga bisa dipanggil
dimanapun dalam project saat diperlukan.
Public Sub GetDatabaseSetting()
dbServer = [Link]
dbUser = [Link]
dbPassword = [Link]
dbName = [Link]
sLocalConn = "server=" & dbServer & ";user id=" & dbUser & ";" & _
"password=" & dbPassword & ";database=" & dbName
End Sub
Sub GetDatabaseSetting dipanggil saat applikasi mulai dijalankan (misal nya saat form splash load).
Tapi saat ini Rani fokus dulu ke form koneksi nya yah, jadi sub ini akan dipanggil pada load form koneksi.
Oiya kita tambahkan juga di module sebuah function untuk mengecek apakah setting database koneksi
dapat terkoneksi sengan baik.
Public Function DatabaseConnected(Optional ByVal Server As String = "", _
Optional ByVal User As String = "", _
Optional ByVal Password As String = "", _
Optional ByVal DatabaseName As String = "") As Boolean
Dim conn As MySqlConnection
conn = New MySqlConnection()
If Server = "" And User = "" And Password = "" And DatabaseName = "" Then
[Link] = sLocalConn
Else
[Link] = "server=" & Server & ";user id=" & _
User & ";password=" & Password & _
";database=" & DatabaseName
End If
Try
[Link]()
[Link]()
Return True
Catch myerror As MySqlException
Return False
[Link]("Error: " & [Link])
Finally
[Link]()
End Try
Return False
End Function
Nah ceritanya untuk mempercepat, kita bisa pakai template form dialog untuk membuat form ini:
End Class
Pada event OK_Button_Click kita bisa melihat bagaimana cara mengubah nilai setting.
Sekian, selamat mencoba