19 Juli 2013

Cara Insert/Save Kutip Satu/Single Quote ( ' ) dan Validasi di VBNET

Salah satu test untuk mengetahui sebuah apliaksi database itu baik (bebas Error/Bugs) adalah dengan test input karaker kutip satu / single quote ('). Contoh saja di form master (contoh master barang), anda input nama barang misal barang xx' , atau barang'. terus save. Jika tidak error berarti aplikasi itu dapat dikatakan baik. Karena kebanyakan programmer sering melupakan hal single quote. Biasanya jika aplikasi itu tidak validasi single quote, akan muncul error :
Unclosed quotation mark after the character string '''. Incorrect syntax near '''.
Penjelasan detailnya seperti ini :
Contoh sintak Save anda seperti ini :
sql = "INSERT INTO M_BARANG (KD_BRG,NM_BRG) VALUES ('" + txt_kd.text + "','" + txt_nm.text + "')"
Kemudian Jika anda menginput nama barang dengan kutip satu (') contoh barang xx', maka sintak anda akan menjadi :
INSERT INTO M_BARANG (KD_BRG,NM_BRG) VALUES ('B001','barang xx'')
Nah ini akan error seperti diatas karena menjadi ada kutip satu yang tidak ada pasangannya, karena seharusnya sintak yang benar adalah :
INSERT INTO M_BARANG (KD_BRG,NM_BRG) VALUES ('B001','barang xx')
Lalu bagaimana caranya agar kutip satu dapat di insert ke database ?
caranya adalah dengan selalu menambahkan single quote jika ada value single quote, coba anda buka query analyzer sql:
Jika anda ingin menampikan data :
A'B
'AB'
AB'
AA''BB'
caranya ?
SELECT 'A''B'
SELECT '''AB'''
SELECT 'AB'''
SELECT 'AA''''BB'''
Hasilnya ?
Lalu bagaimana mem-validasi di VBNET nya ? banyak sekali.............i carannya.
1.Validasi di setiap textbox saat membuat string sql

Sql = "INSERT INTO M_BARANG (KD_BRG,NM_BRG) VALUES ('" + txt_kd.text.Replace("'", "''") + "','" + txt_nm.text.Replace("'", "''") + "')"
2.Validasi di setiap textbox saat event TextChanged atau LostFocus

    Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus
        TextBox1.Text = TextBox1.Text.Replace("'", "''")
    End Sub
3.Validasi saat tombol simpan (looping ke semua object di form)

        For Each obj As TextBox In Me.Controls 'Atau GroupBox1.Controls atau Panel1.Controls (sesuikan saja object container nya)
            If TypeOf obj Is TextBox Then
                obj.Text = obj.Text.Replace("'", "''")
            End If
        Next

Tambahan:
Hal ini juga salah satu cara untuk dapat mencegah dari SQL Injection yang sebelumnya saya bahas pada postingan Form Login.

Sumber : http://djiesoft.blogspot.com/

0 komentar:

Poskan Komentar

Silahkan TInggalkan Komentar Anda di Blog Saya..
No SPAM and No PORN...
Terimakasih Telah meninggalkan Jejak Anda

Related Posts Plugin for WordPress, Blogger...
Award Pertama
Photobucket
Langganan Artikel Si Boersan :

Enter your email address:

Delivered by FeedBurner

Monggo Di Copy Linknya :
Text Link

Banner Link

Komunitas Blogger Indonesia Komunitas Blogwalking