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 :
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(ByValsender As Object, ByVal e AsSystem.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 TextBoxThen
obj.Text = obj.Text.Replace("'", "''")
EndIf
Next
Tambahan:
Hal ini juga salah satu cara untuk dapat mencegah dari SQL Injection yang sebelumnya saya bahas pada postingan Form Login.
Tags:
Hal ini juga salah satu cara untuk dapat mencegah dari SQL Injection yang sebelumnya saya bahas pada postingan Form Login.
Tags:
Single quote problems, How to insert text with single quotation sql, SQL Statement to insert a single quote, How to insert strings containing quotes into the database, How to insert any data in table which contain single quote (').How do I insert a single quote ('), How to enter a single quotation mark, cara simpan tanda petik di database, cara memasukkan tanda petik1 & 2 (' ") pada mysql, Kenapa tanda petik satu tidak dapat disimpan, Menampilkan record yang ada tanda kutip satu,
makasih ka sangat membantu (y)
BalasHapusTQ ABANGDA
BalasHapusterima kasih gan
BalasHapus