0% menganggap dokumen ini bermanfaat (0 suara)
101 tayangan

Tutorial VB

Tutorial ini menjelaskan cara membuat aplikasi CRUD (create, read, update, delete) menggunakan database MySQL dan bahasa pemrograman VB.NET. Tutorial ini membahas tentang membuat koneksi ke database, menampilkan data ke grid view, mengisi form dari grid view, menyimpan dan menghapus data.

Diunggah oleh

Agus Harsanto
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
101 tayangan

Tutorial VB

Tutorial ini menjelaskan cara membuat aplikasi CRUD (create, read, update, delete) menggunakan database MySQL dan bahasa pemrograman VB.NET. Tutorial ini membahas tentang membuat koneksi ke database, menampilkan data ke grid view, mengisi form dari grid view, menyimpan dan menghapus data.

Diunggah oleh

Agus Harsanto
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 42

Tutorial VB.

NET : CRUD (Create, Update, Delete)


Vb.Net Database MySQL
Unknown March 30, 2015

Aplikasi CRUD (Create, Update, Delete) Vb.Net Database


MySQL
Tutorial Sector Code kali ini membuat aplikasi CRUD sederhana
menggunakan database MySQL di Visual Basic Net 2010, sebelumnya kita harus
membuat database di PhpMyadmin terlebih dahulu, baca Tutorial Lengkap Cara
Membuat Database MySQL di PhpMyAdmin. dan untuk tutorial ini penulis
membuat database seperti gambar berikut :

Buatlah Project baru dengan Nama CRUD, buat Form baru dengan
nama FrmUtama.vb, buat design FrmUtama seperti gambar berikut :

Buatlah Module koneksi ke database yang sudah anda buat, baca Tutorial Vb.Net :
Koneksi Database MySQL, Buatlah Module baru dengan nama MdlKoneksi, dan
pastekan Code berikut :

Imports System.Data
Imports System.Data.Odbc
Imports System.Data.SqlClient
Imports MySql.Data.MySqlClient
Imports System.Data.OleDb
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 konek.State = ConnectionState.Closed Then
konek.Open()
End If
Catch ex As Exception
MsgBox("konek Kedatabase Bermasalah, Periksa koneksi Jaringan
Anda")
End Try
End Sub
End Module
Kode untuk tombol Tambah

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button1.Click
DATABARU = True
bersih()
End Sub
Code Untuk Tombol Simpan

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button2.Click
Dim simpan As String
Dim vTanggalLahir As String
Dim vTgl As String
Dim vBln As String
Dim vThn As String
Dim pesan As Integer
vTgl = DateTimePicker1.Value.Day
vBln = DateTimePicker1.Value.Month
vThn = DateTimePicker1.Value.Year
vTanggalLahir = vThn & "-" & vBln & "-" & vTgl
If TextBox2.Text = "" Or TextBox3.Text = "" Then Exit Sub
If DATABARU Then
pesan = MsgBox("Apakah Anda Yakin Data Akan ditambahkan ke
Database ?", vbYesNo + vbInformation, "Perhatian")
If pesan = vbYesNo Then
Exit Sub
End If
simpan = "INSERT INTO
biodata(nama,nis,nisn,jeniskelamin,tempatlahir,tanggallahir,agama,alamat,s
ekolahasal) VALUES ('" & TextBox2.Text & "','" & TextBox3.Text & "','" &
TextBox4.Text & "'," _
+ " '" & TextBox5.Text & "','" & TextBox6.Text & "','" &
vTanggalLahir & "','" & TextBox7.Text & "','" & TextBox8.Text & "','" &
TextBox9.Text & "') "
Else
pesan = MsgBox("Anda yakin data ini akan di update ?", vbYesNo
+ vbInformation, "Perhatian")
If pesan = vbYesNo Then
Exit Sub
End If
simpan = "UPDATE biodata SET " _
+ "nama = '" & TextBox2.Text & "'," _
+ "nis ='" & TextBox3.Text & "'," _
+ "nisn ='" & TextBox4.Text & "'," _
+ "jeniskelamin ='" & TextBox5.Text & "'," _
+ "tempatlahir ='" & TextBox6.Text & "'," _
+ "tanggallahir ='" & vTanggalLahir & "'," _
+ "agama ='" & TextBox7.Text & "'," _
+ "alamat ='" & TextBox8.Text & "'," _
+ "sekolahasal ='" & TextBox9.Text & "'," _
+ "alamatsekolahasal ='" & TextBox9.Text & "' WHERE
idsiswa = '" & TextBox1.Text & "' "
End If
jalankansql(simpan)
Me.Cursor = Cursors.WaitCursor
DataGridView1.Refresh()
isigrid()
Me.Cursor = Cursors.Default
End Sub
Code Untuk Tombol Hapus

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button3.Click
Dim hapussql As String
Dim pesan As Integer
pesan = MsgBox("Apakah anda yakin akan menghapus Data pada server
.. " + TextBox2.Text, vbExclamation + vbYesNo, "perhatian")
If pesan = vbNo Then Exit Sub
hapussql = "DELETE FROM biodata WHERE idsiswa='" & TextBox1.Text &
"'"
jalankansql(hapussql)
Me.Cursor = Cursors.WaitCursor
DataGridView1.Refresh()
isigrid()
Me.Cursor = Cursors.Default
End Sub
Code untuk Tombol Keluar

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button4.Click
Me.Close()
End Sub
Code Functions Simpan

Private Sub jalankansql(ByVal sQl As String)


Dim objcmd As New System.Data.Odbc.OdbcCommand
Call bukaDB()
Try
objcmd.Connection = konek
objcmd.CommandType = CommandType.Text
objcmd.CommandText = sQl
objcmd.ExecuteNonQuery()
objcmd.Dispose()
MsgBox("Data Sudah Disimpan", vbInformation)
Catch ex As Exception
MsgBox("Tidak Bisa Menyimpan data ke Server" & ex.Message)
End Try
End Sub
Code Sub Isidata Ke GridView

Sub isigrid()
bukaDB()
DA = New Odbc.OdbcDataAdapter("SELECT * FROM biodata", konek)
DS = New DataSet
DS.Clear()
DA.Fill(DS, "biodata")
DataGridView1.DataSource = (DS.Tables("biodata"))
DataGridView1.Enabled = True
End Sub
Code Isi Data Dari Gridview Ke TextBox

Private Sub isiTextBox(ByVal x As Integer)


Try
TextBox1.Text = DataGridView1.Rows(x).Cells(0).Value
TextBox2.Text = DataGridView1.Rows(x).Cells(1).Value
TextBox3.Text = DataGridView1.Rows(x).Cells(2).Value
TextBox4.Text = DataGridView1.Rows(x).Cells(3).Value
TextBox5.Text = DataGridView1.Rows(x).Cells(4).Value
TextBox6.Text = DataGridView1.Rows(x).Cells(5).Value
DateTimePicker1.Value =
IIf(IsDBNull(DataGridView1.Rows(x).Cells(6).Value), Date.Now,

DataGridView1.Rows(x).Cells(6).Value)
TextBox7.Text = DataGridView1.Rows(x).Cells(7).Value
TextBox8.Text = DataGridView1.Rows(x).Cells(8).Value
TextBox9.Text = DataGridView1.Rows(x).Cells(9).Value
Catch ex As Exception
End Try
End Sub
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
DataGridView1.CellClick
isiTextBox(e.RowIndex)
DATABARU = False
End Sub
Code untuk Frm Load

Dim DATABARU As Boolean


Private Sub FrmUtama_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
DATABARU = False
isigrid()
End Sub
Jika semuanya sudah selesai, silahkan coba aplikasi CRUD anda, gini penampakannya :

VB.NET MySQL: Create, Read, Update, Delete (CRUD) - Part 1


Posted by rani irsan | 4/14/2015 | VB.NET MySQL

Part 1 | Part 2 | Part 3 | Part 4

Setelah terbengkalai sekian lama menunggu mood hehe... mari kita mulai membahas bagaimana proses
CRUD pada VB.NET dan MySQL.
Pastikan udah baca dulu artikel sebelumnya yah No 1 s/d 3.

Kita akan membuat CRUD untuk tabel berikut:

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.

Detail cara membuatnya lihat disini yah...


Tambahkan juga beberapa label, textbox dan datagridview seperti pada gambar berikut:
Tambahkan panel untuk menyimpan label dan textbox untuk input data, kemudian set property Dock =
Top. Terakhir tambahkan datagridview dan set property Dock = Fill. Beri nama control-control seperti
pada gambar.
Beres dengan UI, mari kita mulai dengan code behind.
Import MySqlClient dan System.Data:
Imports MySql.Data.MySqlClient
Imports System.Data

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

conn = New MySqlConnection()


conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=datapos"
Try
If conn.State = ConnectionState.Closed Then conn.Open()
SQL = "Select classcode, classname From class"

myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
With grdData
.DataSource = myData
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True

.Columns(0).HeaderText = "Kode Kelas"


.Columns(1).HeaderText = "Nama Kelas"
.Columns(0).Width = 100
.Columns(1).Width = 250
End With

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
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 System.EventArgs) Handles Me.Load
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 System.Object, _
ByVal e As System.EventArgs) Handles tbrSave.Click

Dim myCommand As New MySqlCommand

conn = New MySqlConnection()


conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=datapos"
Try
conn.Open()
SQL = "INSERT INTO class (classcode, classname) VALUES " & _
"('" & txtCode.Text & "', '" & txtName.Text & "')"

myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()

MsgBox("Data baru tersimpan")

txtCode.Text = String.Empty
txtName.Text = String.Empty
Data_Load()

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
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.
VB.NET MySQL: Create, Read, Update, Delete (CRUD) - Part 2
Posted by rani irsan | 4/14/2015 | VB.NET MySQL

Part 1 | Part 2 | Part 3 | Part 4

Artikel ini lanjutan dari Part 1 ini yah.

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.

Private Sub grdData_CellMouseDoubleClick(ByVal sender As Object, _


ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _
Handles grdData.CellMouseDoubleClick

txtCode.Text = grdData.CurrentRow.Cells(0).Value
txtName.Text = grdData.CurrentRow.Cells(1).Value
tbrEdit.Enabled = False
txtCode.ReadOnly = True

End Sub

Kita menambahkan txtCode.ReadOnly = 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:

Private Sub tbrEdit_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrEdit.Click

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.

Private Sub tbrCancel_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrCancel.Click
txtCode.Text = String.Empty
txtName.Text = String.Empty
tbrEdit.Enabled = True
txtCode.ReadOnly = False
Data_Load()
End Sub

Code tbrEdit.Enabled = 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)

Private Sub tbrSave_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrSave.Click

Dim myCommand As New MySqlCommand

conn = New MySqlConnection()


conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=datapos"
Try
conn.Open()
If tbrEdit.Enabled = True Then
SQL = "INSERT INTO class (classcode, classname) VALUES " & _
"('" & txtCode.Text & "', '" & txtName.Text & "')"
Else
SQL = "UPDATE class SET classname = '" & txtName.Text & "' " & _
"WHERE classcode = '" & txtCode.Text & "'"
End If

myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()

If tbrEdit.Enabled = True Then


MsgBox("Data baru tersimpan")
Else
MsgBox("Perubahan tersimpan")
End If

tbrCancel_Click(Nothing, Nothing)

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub

Sekarang mari kita coba lagi.


Jangan kemana-mana dulu, Part 3 masih lanjut membahas soal Delete dan Close Form.
VB.NET MySQL: Create, Read, Update, Delete (CRUD) - Part 3
Posted by rani irsan | 4/15/2015 | VB.NET MySQL

Part 1 | Part 2 | Part 3 | Part 4

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.

Private Sub tbrDelete_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrDelete.Click

If MsgBox("Yakin akan menghapus data?", MsgBoxStyle.YesNo, _


"Konfirmasi") = MsgBoxResult.No Then Exit Sub

Dim myCommand As New MySqlCommand

conn = New MySqlConnection()


conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=database"
Try
conn.Open()
SQL = "DELETE FROM class WHERE classcode = " & _
"'" & grdData.CurrentRow.Cells(0).Value & "'"

myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()

MsgBox("Data terhapus")

tbrCancel_Click(Nothing, Nothing)

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub

Terakhir tambahkan procedure untuk menutup form pada event tbrClose_Click.

Private Sub tbrClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrClose.Click
Me.Close()
End Sub

Nah sudah lengkap deh, mari kita coba...


Untuk code selengkapnya di Part 4 yah...
VB.NET MySQL: Create, Read, Update, Delete (CRUD) - Part 4
Posted by rani irsan | 4/15/2015 | VB.NET MySQL

Part 1 | Part 2 | Part 3 | Part 4


Nah ini dia code komplit nya, semoga bermanfaat yah. Happy coding ^_^v

Imports MySql.Data.MySqlClient
Imports System.Data

Public Class frmClass


Dim conn As MySqlConnection
Dim SQL As String

Sub Data_Load()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable

conn = New MySqlConnection()


conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=datapos"
Try
If conn.State = ConnectionState.Closed Then conn.Open()
SQL = "Select classcode, classname From class"

myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
With grdData
.DataSource = myData
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True

.Columns(0).HeaderText = "Kode Kelas"


.Columns(1).HeaderText = "Nama Kelas"
.Columns(0).Width = 100
.Columns(1).Width = 250
End With

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub

Private Sub frmClass_Load(ByVal sender As Object, _


ByVal e As System.EventArgs) Handles Me.Load
Data_Load()
End Sub

Private Sub tbrSave_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrSave.Click

Dim myCommand As New MySqlCommand

conn = New MySqlConnection()


conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=datapos"
Try
conn.Open()
If tbrEdit.Enabled = True Then
SQL = "INSERT INTO class (classcode, classname) VALUES " & _
"('" & txtCode.Text & "', '" & txtName.Text & "')"
Else
SQL = "UPDATE class SET classname = '" & txtName.Text & "' " & _
"WHERE classcode = '" & txtCode.Text & "'"
End If

myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()

If tbrEdit.Enabled = True Then


MsgBox("Data baru tersimpan")
Else
MsgBox("Perubahan tersimpan")
End If

tbrCancel_Click(Nothing, Nothing)

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Private Sub grdData_CellMouseDoubleClick(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _
Handles grdData.CellMouseDoubleClick

txtCode.Text = grdData.CurrentRow.Cells(0).Value
txtName.Text = grdData.CurrentRow.Cells(1).Value
tbrEdit.Enabled = False
txtCode.ReadOnly = True

End Sub

Private Sub tbrEdit_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrEdit.Click

grdData_CellMouseDoubleClick(Nothing, Nothing)

End Sub

Private Sub tbrDelete_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrDelete.Click

If MsgBox("Yakin akan menghapus data?", MsgBoxStyle.YesNo, _


"Konfirmasi") = MsgBoxResult.No Then Exit Sub

Dim myCommand As New MySqlCommand

conn = New MySqlConnection()


conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=datapos"
Try
conn.Open()
SQL = "DELETE FROM class WHERE classcode = " & _
"'" & grdData.CurrentRow.Cells(0).Value & "'"

myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()

MsgBox("Data terhapus")

tbrCancel_Click(Nothing, Nothing)

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub

Private Sub tbrCancel_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrCancel.Click
txtCode.Text = String.Empty
txtName.Text = String.Empty
tbrEdit.Enabled = True
txtCode.ReadOnly = False
Data_Load()
End Sub

Private Sub tbrClose_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles tbrClose.Click
Me.Close()
End Sub

End Class
Selanjutnya kita akan mencoba menampilkan isi table kategori pada database latihan ke DataGridView di
aplikasi VB.NET
Query yang digunakan:

Isi table:

Atur tampilan form sebagai berikut, dengan menambahkan control DataGridView yang diberinama
grdData.
Kemudian atur code sebagai berikut:
Imports MySql.Data.MySqlClient
Imports System.Data
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

Private Sub Form1_Load(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles MyBase.Load
conn = New MySqlConnection()
conn.ConnectionString = "server=localhost;user id=root;" & _
"password=;database=latihan"
Try
conn.Open()
SQL = "Select kodekategori, namakategori From kategori"

myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)

grdData.DataSource = myData

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
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 VB.NET?
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 VB.NET & 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.

Atur UI seperti gambar berikut:

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 System.IO
Imports System.Data
Imports System.Data.OleDb
Imports MySql.Data.MySqlClient
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

Sub Procedure berikut untuk menampilkan data dari tabel MySQL.


Sub MySQLDataLoad()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String

Try
conn.Open()
SQL = "Select nik, nama From tblkaryawan"

myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)

DataGridView2.DataSource = myData

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
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 System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

TextBox1.ReadOnly = True
Button1.Text = "Browse..."
Button2.Enabled = False
Button2.Text = "Import"
Label1.Text = "Data Excel"
Label2.Text = "Data MySQL"
With DataGridView1
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With

With DataGridView2
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With

conn.ConnectionString = 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

Dim sConn As String


sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

exConn = New System.Data.OleDb.OleDbConnection(sConn)


cmd = New System.Data.OleDb.OleDbDataAdapter( _
"select * from [" & SheetName & "]", exConn)
cmd.TableMappings.Add("Table", SheetName)
dt = New System.Data.DataSet
cmd.Fill(dt)
tblImport = dt.Tables(0)
DataGridView1.DataSource = tblImport

exConn.Close()
End Sub

'Untuk menampilkan nama sheet di listbox


Sub GetExcelSheetNames(ByVal FileName As String)
Dim sConn As String
sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

Dim conn As New OleDbConnection(sConn)

conn.Open()

Dim dtSheets As DataTable = _


conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim drSheet As DataRow

ListBox1.Items.Clear()
For Each drSheet In dtSheets.Rows
ListBox1.Items.Add(drSheet("TABLE_NAME").ToString())
Next

LoadExcel2Grid(FileName, ListBox1.Items(0).ToString)

conn.Close()

End Sub
VB.NET MySQL: Import Data dari Excel - Part 2
Posted by rani irsan | 4/22/2015 | VB.NET MySQL

Next next... artikel ini lanjutan dari Part 1

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 System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

With OpenFileDialog1
.FileName = String.Empty
.InitialDirectory = "C:\"
.Title = "Open Excel File"
.Filter = "Excel 97-2003|*.xls|Excel 2007|*.xlsx"
End With

Dim result As DialogResult = OpenFileDialog1.ShowDialog()


If result = Windows.Forms.DialogResult.OK Then
Try
TextBox1.Text = OpenFileDialog1.FileName
GetExcelSheetNames(TextBox1.Text)
Catch ex As Exception
MsgBox("Error : " & ex.Message)
End Try
End If

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 System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
LoadExcel2Grid(TextBox1.Text, ListBox1.SelectedItem.ToString)
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 System.Object, _
ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Button2.Enabled = (Len(TextBox1.Text) > 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 conn.State = ConnectionState.Closed Then conn.Open()

SQL = "INSERT IGNORE INTO tblKaryawan (nik, nama) VALUES " & _
"('" & strNIK & "', '" & strNama & "')"

myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()

MsgBox("Data baru tersimpan")

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub

Event Button2_Click akan menjalankan proses migrasi, insert data akan diambil dari tblImport.
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click

For i As Integer = 0 To tblImport.Rows.Count - 1


DoInsert(tblImport.Rows(i).Item(0).ToString, _
tblImport.Rows(i).Item(1).ToString)
Next
MsgBox("Proses Import Selesai!")
MySQLDataLoad()

End Sub

Oke selesai dengan code, mari kita coba run.


Data MySQL akan ditampilkan saat form pertama kali dipanggil, klik tombol Browse... untuk memilih file
excel.

Pilih file excel kemudian klik Open.


Pilihan sheet akan ditampilkan di ListBox dan Data Excel dari sheet terpilih ditampilkan di grid. Klik
tombol Import untuk memulai proses import.

Ketika proses import selesai, maka akan muncul pesan konfirmasi:

Hasil yang telah di import pun ditampilkan di grid Data MySQL


Dan ini isi tabel di MySQL setelah proses import.

VB.NET MySQL: Import Data dari Excel - Part 3


Posted by rani irsan | 4/22/2015 | VB.NET MySQL

Artikel ini masih merupakan artikel lanjutan dari Part2, yang akan menampilkan kode lengkap yang sudah
kita susun sebelumnya.

Imports System.IO
Imports System.Data
Imports System.Data.OleDb
Imports MySql.Data.MySqlClient

Public Class frmImportExcel

Dim conn As New MySqlConnection


Dim strConn As String = "server=localhost;user id=root;" & _
"password=xxxx;database=latihan"
Dim tblImport As DataTable
Sub MySQLDataLoad()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String

Try
conn.Open()
SQL = "Select nik, nama From tblkaryawan"

myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)

DataGridView2.DataSource = myData

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub

Private Sub frmImportExcel_Load(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles MyBase.Load

TextBox1.ReadOnly = True
Button1.Text = "Browse..."
Button2.Enabled = False
Button2.Text = "Import"
Label1.Text = "Data Excel"
Label2.Text = "Data MySQL"

With DataGridView1
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With

With DataGridView2
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With

conn.ConnectionString = strConn
MySQLDataLoad()

End Sub

'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

Dim sConn As String


sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

exConn = New System.Data.OleDb.OleDbConnection(sConn)


cmd = New System.Data.OleDb.OleDbDataAdapter( _
"select * from [" & SheetName & "]", exConn)
cmd.TableMappings.Add("Table", SheetName)
dt = New System.Data.DataSet
cmd.Fill(dt)
tblImport = dt.Tables(0)
DataGridView1.DataSource = tblImport

exConn.Close()
End Sub

'Untuk menampilkan nama sheet di listbox


Sub GetExcelSheetNames(ByVal FileName As String)
Dim sConn As String
sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

Dim conn As New OleDbConnection(sConn)

conn.Open()

Dim dtSheets As DataTable = _


conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim drSheet As DataRow

ListBox1.Items.Clear()
For Each drSheet In dtSheets.Rows
ListBox1.Items.Add(drSheet("TABLE_NAME").ToString())
Next

LoadExcel2Grid(FileName, ListBox1.Items(0).ToString)

conn.Close()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles Button1.Click

With OpenFileDialog1
.FileName = String.Empty
.InitialDirectory = "C:\"
.Title = "Open Excel File"
.Filter = "Excel 97-2003|*.xls|Excel 2007|*.xlsx"
End With
Dim result As DialogResult = OpenFileDialog1.ShowDialog()
If result = Windows.Forms.DialogResult.OK Then
Try
TextBox1.Text = OpenFileDialog1.FileName
GetExcelSheetNames(TextBox1.Text)
Catch ex As Exception
MsgBox("Error : " & ex.Message)
End Try
End If

End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
LoadExcel2Grid(TextBox1.Text, ListBox1.SelectedItem.ToString)
End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles TextBox1.TextChanged

Button2.Enabled = (Len(TextBox1.Text) > 0)


End Sub

Private Sub Button2_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles Button2.Click

For i As Integer = 0 To tblImport.Rows.Count - 1


DoInsert(tblImport.Rows(i).Item(0).ToString, _
tblImport.Rows(i).Item(1).ToString)
Next
MsgBox("Proses Import Selesai!")
MySQLDataLoad()

End Sub

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 conn.State = ConnectionState.Closed Then conn.Open()

SQL = "INSERT IGNORE INTO tblKaryawan (nik, nama) VALUES " & _
"('" & strNIK & "', '" & strNama & "')"

myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()

MsgBox("Data baru tersimpan")

conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub

End Class
VB.NET: Menyimpan Setting Koneksi di User Setting
Posted by rani irsan | 5/16/2015 | VB.NET
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...

Pilih template Module, berinama (contoh: ModGlobalVar) kemudian klik Add.


Di dalam nya Rani simpan 4 variable untuk menyimpan nama server, user, password, dan nama
database. Serta 1 buah variable string untuk menyimpan connection string lengkap.
Module ModGlobalVar

Public dbServer As String


Public dbUser As String
Public dbPassword As String
Public dbName As String
Public sLocalConn As String

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 = My.Settings.dbServer
dbUser = My.Settings.dbUser
dbPassword = My.Settings.dbPassword
dbName = My.Settings.dbName
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
conn.ConnectionString = sLocalConn
Else
conn.ConnectionString = "server=" & Server & ";user id=" & _
User & ";password=" & Password & _
";database=" & DatabaseName
End If
Try
conn.Open()
conn.Close()
Return True
Catch myerror As MySqlException
Return False
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
Return False
End Function

Nah ceritanya untuk mempercepat, kita bisa pakai template form dialog untuk membuat form ini:

Atur UI sebagai berikut:


Code:
Imports System.Windows.Forms

Public Class frmConnection

Private Sub frmConnection_Load(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles MyBase.Load
GetDatabaseSetting()
txtDbServer.Text = dbServer
txtDbUser.Text = dbUser
txtDbPassword.Text = dbPassword
txtDbName.Text = dbName
End Sub

Private Sub OK_Button_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles OK_Button.Click
If DatabaseConnected(txtDbServer.Text, txtDbUser.Text, _
txtDbPassword.Text, txtDbName.Text) = True Then
With My.Settings
.dbServer = txtDbServer.Text
.dbUser = txtDbUser.Text
.dbPassword = txtDbPassword.Text
.dbName = txtDbName.Text
.Save()
End With
GetDatabaseSetting()
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End If
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub

End Class
Pada event OK_Button_Click kita bisa melihat bagaimana cara mengubah nilai setting.
Sekian, selamat mencoba

Anda mungkin juga menyukai