Mencari Dan Merubah data dengan Perintah SQL Select,Update di VB.Net.
Ketika kita bekerja dengan database, kita tidak bisa lepas dari CRUD (Create, Read, Update, Delete).
Pada post kali ini saya akan mencatat bagaimana cara Mencari dan Merubah data dengan perintah SQL Select dan Update. biar engga lupa jangan lupa bookmark CRTL + D.
Mencari dengan perintah SQL Select
untuk mencari data dengan perintah select kita juga perlu menambahkan filter supaya pencarian data lebih akurat dan tepat sasaran.
di asumsikan kita memiliki struktur table seperti ini.
Dengan desain form seperti ini.
skenarionya adalah, ketika kita memasukan nik di kolom nik dan menekan enter, program akan terhubung ke database yang sudah dibuat dan akan melakukan pencarian data. jika nik yang dimasukan sudah ada maka akan memunculkan detail data dari nik tersebut.
Import name space
Imports System.Data.OleDb
Set Connection String
Dim connection_string As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\database.accdb;Persist Security Info=False;"
Buat variable untuk menampung informasi apakah nik yang di inputkan baru atau data lama.
Dim new_entry As Integer = 0
Function Pencarian data dan pengisian data kedalam objek yang sudah disiapkan.
buat function dengan nama "cari_data_berdasarkan_nik"
Private Sub cari_data_berdasarkan_nik()
'variable script_sql_insert menyimpan perintah insert @nik,@nama,@jk,@tgllahir adalah variable atau paramete
Dim script_sql_insert = "select * from karyawan where nik = @nik"
'usahakan gunakan using supaya objek yang kita buat akan otomatis tertutup kalo udah selesai.
'ikon sebagai using statement koneksi ke database.
Using iKon = New OleDbConnection(connection_string)
'ini pengecekan aja siapa tau ada tuyul yang engga sengaja nyalain koneksi.
If iKon.State = ConnectionState.Open Then iKon.Close()
iKon.Open()
'kasih jebakan petruk buat nangkep error
Try
'lagi, gunakan using
'icmd sebagai statement untuk menjalankan perintah sql menggunakan koneksi ikon
Using icmd = New OleDbCommand(script_sql_insert, iKon)
'dengan menggunakan parameter tidak usah khawatir dengan nama yang menggandung ' (apostrop) karena otomatis dianggap sebagai string biasa
'dengan parameter kekhawatiran sql injection banyak berkurang.
icmd.Parameters.Add(New OleDbParameter("@nik", tnik.Text))
'setelah parameter dibuat execute icmd
'karena kita melakukan d=pencarian data kita gunakan data reader.
Using reader As OleDbDataReader = icmd.ExecuteReader
'jika data reader menemukan data yang dicari atau datareader mengandung baris yang artinya ada data yang ditemukan
If reader.HasRows = True Then
'lakukan pembacaaan ke datareader
While reader.Read
tnama.Text = reader("nama")
cmbjk.Text = reader("jenis_kelamin")
dttgl_lahir.Value = reader("tanggal_lahir")
End While
new_entry = 0
Else
new_entry = 1
MsgBox("NIK belum terdaftar")
End If
End Using
End Using
Catch ex As Exception
'jika terjadi error ketika menjalankan icmd, akan ditanggkap disini dan dikasih pesan error
'jika errornya ada di koneksi tidak akan ditangkap disini karena try ini ada didalam koneksi.
MsgBox("error simpan data" & vbNewLine & ex.Message)
End Try
End Using
End Sub
panggil function "cari_data_berdasarkan_nik" ketika terjadi event keydown di tnik.
Private Sub tnik_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tnik.KeyDown
'ketika tombol enter ditekan
If e.KeyCode = 13 Then
cari_data_berdasarkan_nik()
End If
End Sub
hasil.
Data ditemukan.
Data tidak ditemukan.
Menyimpan perubahan data dengan perintah SQL Update
Setelah kita menemukan data yang ingin diubah dengan pencarian diatas, kita akan melanjutkan dengan membuat function "simpan_perubahan_data"
Function "simpan_perubahan_data"
Private Sub simpan_perubahan_data()
'variable script_sql_insert menyimpan perintah insert @nik,@nama,@jk,@tgllahir adalah variable atau paramete
'ingat untuk kasus ini primary key tidak boleh diubah.
Dim script_sql_insert = "update karyawan set nama = @nama, jenis_kelamin = @jk, tanggal_lahir = @tgllahir where nik = @nik"
'usahakan gunakan using supaya objek yang kita buat akan otomatis tertutup kalo udah selesai.
'ikon sebagai using statement koneksi ke database.
Using iKon = New OleDbConnection(connection_string)
'ini pengecekan aja siapa tau ada tuyul yang engga sengaja nyalain koneksi.
If iKon.State = ConnectionState.Open Then iKon.Close()
iKon.Open()
'kasih jebakan petruk buat nangkep error
Try
'lagi, gunakan using
'icmd sebagai statement untuk menjalankan perintah sql menggunakan koneksi ikon
Using icmd = New OleDbCommand(script_sql_insert, iKon)
icmd.Parameters.Add(New OleDbParameter("@nik", tnik.Text))
'dengan menggunakan parameter tidak usah khawatir dengan nama yang menggandung ' (apostrop) karena otomatis dianggap sebagai string biasa
'dengan parameter kekhawatiran sql injection banyak berkurang.
icmd.Parameters.Add(New OleDbParameter("@nama", tnama.Text))
icmd.Parameters.Add(New OleDbParameter("@jk", cmbjk.Text))
icmd.Parameters.Add(New OleDbParameter("@tgllahir", dttgl_lahir.Value.Date))
'setelah parameter dibuat execute icmd
icmd.ExecuteNonQuery()
End Using
MsgBox("Perubahan Data Berhasil disimpan")
Catch ex As Exception
'jika terjadi error ketika menjalankan icmd, akan ditanggkap disini dan dikasih pesan error
'jika errornya ada di koneksi tidak akan ditangkap disini karena try ini ada didalam koneksi.
MsgBox("error simpan perubahan data" & vbNewLine & ex.Message)
End Try
End Using
End Sub
Pemanggilan data di tombol save.
Private Sub btn_simpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_simpan.Click
If new_entry = 0 Then
simpan_perubahan_data()
Else
simpan_data()
End If
End Sub
Hasil.
Bahasa : VB.Net
IDE : Visual Studio 2010
.Net Framework : 3.5 .Net Framework
Database : Microsoft Access 2007
Pembahasan : CRUD, SQL, Update, Statement Using, OLEDBConnection, OLEDBCommand, OLEDBParameter
sekian untuk posting kali ini, jangan lupa setelah membaca like, share dan sertakan link ini sebagai sumber kalo mau paste artikel ini di blog kalian.
baca juga :
CRUD:Menambahkan data dengan Perintah SQL Insert di VB.Net










0 comments:
Post a Comment