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