Cara Insert & Update Data Dengan 1 Tombol VB.Net Ke MySQL

Yang namanya anak teknik informatika, ujung-ujung nya pasti bikin software untuk tugas akhir. sebagian dari mereka ada juga yang mendalami networrking. Nah, ini pengalaman saya dalam membimbing mahaiswa menyelesaikan skripsi dan tugas akhir untuk anak D3. Kebanyakan dari mereka memisahkan antara tombol simpan & tombol update. 

Jadi terdapat 2 tombol. 1 tombol simpan, dan 1 tombol update. say apikir ini sangan tidak efektif. Kenapa ? karena memungkinkan terjadinya banyak kesalahan, salah satunya adalah kemungkinan keliru mengklik tombol. 1 lagi terjadinya pemborosan penggunaan object.

Hanya untuk menyimpan atau meng-update, kita bisa menggunakan hanya dengan 1 tombol, dengan cara mendeteksi data di tabel sesuai kiteria tertentu.

Contoh : Terdapat data siswa dengan NIM 12345. Maka hanya dengan 1 tombol simpan, aplikasi dapat menentukan sendiri apakah data tersebut akan di-Insert, atau di-Update dengan logika sebagai berikut :

Pada Saat tombol Simpan di Klik :
Cek tabel DataSiswa dimana NIM = 12345
Jika data siswa dengan NIM 12345 ditemukan, maka
    Cukup update data siswa dengan NIM 12345 tsb.
Jika data siswa dengan NIM 12345 tidak ditemukan, maka
    Simpan data baru dengan NIM 12345
Selesai.

Simple kan ?

Yuk kita masuk ke code.

Call konek()
strSQL = "SELECT * FROM tbBarang WHERE ID = '" & IDTerpilih & "'"
com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
rd = com.ExecuteReader()
rd.Read()
If rd.HasRows Then
    Call konek()
    strSQL = "UPDATE tbBarang SET KBR = '" & txtKBR.Text & _
        "', KodeHAI = '" & txtKodeHAI.Text & _
        "', JenisBarang = '" & txtJenisBarang.Text & _
        "', NamaBarang = '" & txtNamaBarang.Text & _
        "', IsiDus = '" & txtIsiDus.Text & _
        "', Keterangan = '" & txtketerangan.Text & _
        "' WHERE ID ='" & IDTerpilih & "'"
    com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
    com.ExecuteNonQuery()
    Call frmBarang.TampilkanTabel()
Else
    Call konek()
    strSQL = "INSERT INTO tbBarang VALUES ('" & _
    IDTerpilih & "','" & _
    txtKBR.Text & "','" & _
    txtKodeHAI.Text & "','" & _
    txtJenisBarang.Text & "','" & _
    txtNamaBarang.Text & "','" & _
    txtIsiDus.Text & "','" & _
    txtketerangan.Text & "')"
    com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
    com.ExecuteNonQuery()
    Call frmBarang.TampilkanTabel()
End If
Me.Close()

Penjelasan :

Call konek()
strSQL = "SELECT * FROM tbBarang WHERE ID = '" & IDTerpilih & "'"
com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
rd = com.ExecuteReader()
rd.Read()
Code ini berfungsi untuk mengecek keberadaan data terseleksi di VB.Net apakah sudah ada di dalam tabel MySQL atau belum sesuai syntax SQL yang dituliskan.

If rd.HasRows Then
Jika data ditemukan, maka :

Call konek()
strSQL = "UPDATE tbBarang SET KBR = '" & txtKBR.Text & _
    "', KodeHAI = '" & txtKodeHAI.Text & _
    "', JenisBarang = '" & txtJenisBarang.Text & _
    "', NamaBarang = '" & txtNamaBarang.Text & _
    "', IsiDus = '" & txtIsiDus.Text & _
    "', Keterangan = '" & txtketerangan.Text & _
    "' WHERE ID ='" & IDTerpilih & "'"
com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
com.ExecuteNonQuery()
Jalankan code update. Karena kalau data dengan PrimaryKey yang sama sudah ada, sudah pasti data tersebut hanya bisa diupdate. Tidak mungkin ada 2 data dengan PrimaryKey yang sama.

Call frmBarang.TampilkanTabel()
Setelah semua data berhasil tersimpan/terupdate, maka panggil Sub TampilkanTabel untuk menanpilkan data yang barusan diupdate/disimpan tersebut ke dalam DataGridView.

Else
Bagian dari code IF diatas yang menyatakan "jika data tidak ditemukan".

Call konek()
strSQL = "INSERT INTO tbBarang VALUES ('" & _
IDTerpilih & "','" & _
txtKBR.Text & "','" & _
txtKodeHAI.Text & "','" & _
txtJenisBarang.Text & "','" & _
txtNamaBarang.Text & "','" & _
txtIsiDus.Text & "','" & _
txtketerangan.Text & "')"
com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
com.ExecuteNonQuery()
Jalankan code simpan. Karena jika data tidak ditemukan, maka sudah pasti kita harus menyimpan data baru.

End If
Kasus IF selesai.

Me.Close()
Titip form peyimpanan. Kalau tidak mau otomatis tertutup, maka code ini tidak perlu dituliskan.
Gimana ? mudah kan ?.. hehehe Belajar pemrograman tidak sesulit yang kalian bayangkan. Dengan hanya menggunakan 1 tombol untuk SImpan & Update seperti ini tentunya lebih simple.

Selamat mencoba.. Jika ada yang kurang jelas, silahkan tanyakan di komentar. :)

Subscribe for latest Apps and Games


25 comments:

  1. terima kasih bagus tutor nya :)

    BalasHapus
  2. mau tanya dong kak....... kalo nanganin eror saat insert data yang sama, delete data kosong n update primary key gmna yaa..??

    BalasHapus
    Balasan
    1. Insert data yang sama : boleh2 saja, yang penting primarykey nya beda.

      delete data kosong : bisa2 aja, yang penting primarykey nya ada

      update primarykey : yo kagak bisa mbak, :) primarykey itu kan fungsinya sebagai acuan.

      Hapus
  3. habis klik tombol simpan malah muncul pop up
    A first chance exception of type 'System.InvalidOperationException' occurred in MySql.Data.dll

    BalasHapus
    Balasan
    1. Simple gan, mungkin koneksi SQL nya belum dibuat,
      cek cara bikin koneksi MySQL ke VB.Net disini gan : http://teknosian.blogspot.com/2014/05/membuat-koneksi-vbnet-2013-dengan-mysql.html

      Hapus
  4. Terima kasih Andrio Prijaya
    Tutorialnya lengkap bagus ada penjelasanya.
    semoga bermanfaat untuk yang lain juga..

    BalasHapus
  5. mau tanya nih gan knp di waktu kli simpan pertama kali oke tapi ke dua kalinya eror

    BalasHapus
  6. Kak kasih tau donk, coding SIMPAN, HAPUS, EDIT SAMA TAMBAH pada vb 2010 databasenya PHPMYADMIN, yang jelas kak, soalnyaa aku baru belajar, pengen tahu, kiirim ke email aku ya kak terima kasih rizkaandriana808@gmail.com .. :)

    BalasHapus
  7. Bang, arti strSQR itu apa? Aku errornya disitu.

    BalasHapus
    Balasan
    1. Ketikkan : "Dim strsql as String" tepat di atas baris yg error

      Hapus
  8. Gan, untuk keterangan MySqlException was unhandled itu kenapa ya?
    waktu sy simpan dia muncul keterangan itu. mohon penjelasan nya.

    BalasHapus
  9. Gan, dibagian rd = com.ExecuteReader ada errHandle muncul InvalidOperationException was unhandled, mohon bantu pencerahan ga..
    Kalo search help nya diarahkan ke netframework yang bermasalah. Terima kasih

    BalasHapus
    Balasan
    1. Coba ketik call konek() di baris paling atas gan.

      Hapus
    2. Coba ketik call konek() di baris paling atas gan.

      Hapus
    3. Teruskan update codingan yang lain gan.. biar bisa buat pencerahan bagi yang newbie ky saya.. Trims gan.. Sukses

      Hapus
  10. gan, numpang tanya untuk update data dengan 2 atau lebih filter codingnya seperti apa ya ga..
    mis :
    Public Sub UpdateLogin()
    Call konek()
    terima kasih sebelumnya gan..
    strSQL = "UPDATE tbluserlog SET TimeOut=" & Format(Now, "HH:mm:ss") & " WHERE IDLogin=" & Label3.Text & " AND TimeIn=" & Label2.Text & ""
    com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
    com.ExecuteNonQuery()
    End Sub

    BalasHapus
  11. gan, numpang tanya untuk update data dengan multiple kriteria dalam satu field codingnya seperti apa ya ga..
    mis :

    Public Sub UpdateLogin()
    Call konek()
    strSQL = "UPDATE tbluserlog SET TimeOut=" & Format(Now, "HH:mm:ss") & " WHERE IDLogin=" & Label3.Text & " AND TimeIn=" & Label2.Text & ""
    com = New MySql.Data.MySqlClient.MySqlCommand(strSQL, conn)
    com.ExecuteNonQuery()
    End Sub

    coding ini selalu gagal.
    tolong dibantu gan, terima kasih sebelumnya gan..

    BalasHapus