Kali ini saya akan share tentang penggunaan USING, END USING di VBNET. Intinya adalah untuk mengoptimalkan sintak dan performance aplikasi agar tidak banyak memory komputer yang terpakai dan terbuang percuma. Maksudnya? seringkali jika kita mendeklarasikan variable tidak kita hapus (dispose/erase/clear/nothing) saat variable itu tidak kita gunakan lagi, sehingga aplikasi anda semakin lama akan semakin berat.
Contoh dalam membuat form master data saja, biasanya kita deklarasikan seperti ini kan ?
Dim con As Odbc.OdbcConnection
Dim cmd As Odbc.OdbcCommand
Dim adp As Odbc.OdbcDataAdapter
Dim reader As Odbc.OdbcDataReader
Dim tbl As DataTable
Dim constr As String ="dsn=djiesoft_db;uid=sa;password=12345"
Dari contoh diatas kita bisa tahu saat form active saja sudah 6 variable yang diload ke memory, dan variable itu akan selalu ada di memory sampai form tersebut ditutup, jika kita membuka banyak form??? Baiklah langsung keUSING, END USING adalah suatu metode untuk mendeklarasikan variable/object dimana variable itu akan otomatis terhapus saat keluar dari END USING. jadi tidak perlu report untuk menulis sintak hapus seperti : variable.dispose, erase variable, variable.clear atau variable = nothing, dll. Sehingga memory kita akan aman karena object/variable tersebut otomatis di hapus. Contohnya adalah :
Contoh (sebelum menggunakan USING, END USING) : Lalu di event form load kita open koneksi :
con = New Odbc.OdbcConnection(constr)
con.Open()
Setelah itu ini contoh sintak di tombol simpan :
cmd = New Odbc.OdbcCommand("INSERT INTO ...", con)
cmd.ExecuteNonQuery()
dan ini contoh sintak di tombol refresh :
cmd = New Odbc.OdbcCommand("SELECT * FROM ...", con)
reader = cmd.ExecuteReader
Do While reader.Read
'ADD TO LISTVIEW/DATAGRIDVIEW...
Loop
reader.Close()
'jika anda tidak .Close maka akan error saat anda tekan tombol refresh lagi/selanjutnya.
'jika anda tidak .Close maka akan error saat anda tekan tombol refresh lagi/selanjutnya.
atau jika anda lebih suka menggunakan Datasource maka biasanya sintaknya seperti ini :
adp = New Odbc.OdbcDataAdapter("SELECT * FROM ...", con)
tbl = New DataTable
adp.Fill(tbl)
DataGridView1.DataSource = tbl
Saat anda ingin menggunakan USING, END USING maka dari contoh di atas kita hanya akan mengunakan 1 variable saja yaitu constr, selanjutnya sintak2 tersebut akan berubah menjadi :
1. di form load tidak ada sintak untuk open koneksi
2. sintak di tombol simpan berubah menjadi :
Using con As New Odbc.OdbcConnection(constr)
con.Open()
Using cmd As New Odbc.OdbcCommand("INSERT INTO...", con)
cmd.ExecuteNonQuery()
End Using
End Using
3. sintak di tombol refresh berubah menjadi :
3.1 via datareader
Using con As New Odbc.OdbcConnection(constr)
con.Open()
Using cmd As New Odbc.OdbcCommand("SELECT * FROM...", con)
Using reader As Odbc.OdbcDataReader = cmd.ExecuteReader
Do While reader.Read
'ADD TO LISTVIEW/DATAGRIDVIEW...
Loop
End Using
End Using
End Using
3.2 via dataadapter
Using con As New Odbc.OdbcConnection(constr)
con.Open()
Using adp As New Odbc.OdbcDataAdapter("SELECT * FROM ...", con)
Using tbl As New DataTable
adp.Fill(tbl)
DataGridView1.DataSource = tbl
End Using
End Using
End Using
Dengan cara ini juga dapat mempersingkat anda saat ingin mengeksekusi beberapa perintah sql secara bertahap, contoh : pertama delete, kedua insert, ketiga update :
Nah bagaimana, cukup jelas kan? ini memang bukan aturan baku (wajib) karena setiap programmer punya logika dan style sendiri dalam menulis sintak, tetapi ada baiknya apa yang kita tahu dan menurut kita bermanfaat kita bagikan ke yang lain. Selain itu ada juga variable2 yang kita harus deklarasikan sebagai PUBLIC (module/class), semua sesuaikan dengan kondisi yang terjadi.
Using cmd As New SqlClient.SqlCommand("DELETE FROM TABLE .. WHERE ..”, v_con)
cmd.ExecuteNonQuery()
End Using
Using cmd As New SqlClient.SqlCommand("INSERT INTO TABLE .. VALUES ..”, v_con)
cmd.ExecuteNonQuery()
End Using
Using cmd As New SqlClient.SqlCommand("UPDATE TABLE .. WHERE ..”, v_con)
cmd.ExecuteNonQuery()
End Using
Nah bagaimana, cukup jelas kan? ini memang bukan aturan baku (wajib) karena setiap programmer punya logika dan style sendiri dalam menulis sintak, tetapi ada baiknya apa yang kita tahu dan menurut kita bermanfaat kita bagikan ke yang lain. Selain itu ada juga variable2 yang kita harus deklarasikan sebagai PUBLIC (module/class), semua sesuaikan dengan kondisi yang terjadi.