myconnectionUsaha.AccessUsahaInsert(txtID.Text, Replace(txtNama.Text, "'", """"))
Fungsi Replace tersebut untuk mengantisipasi, jika user melakukan penginputan dengan memasukkan karakter “ ‘ “ (tanda petik), jika tidak ada fungsi Replace maka akan muncul error message seperti dibawah.
Kenapa bisa muncul error seperti ini, kalau di ingat lagi pada Class AccessUsaha.vb, kita menggunakan Sintaks seperti dibawah ini.
Public Function AccessUsahaInsert(ByVal IDUsaha As String, ByVal NamaUsaha As String)
Dim myCmd As New OleDbCommand
Dim myconnection As New AccessData.DatabaseConnection
myCmd.CommandText = "Insert Into [TbUsaha]" _
& " (IDUsaha,NamaUsaha) Values (" _
& "'" & IDUsaha & "', '" & NamaUsaha & "') ;"
myCmd.Connection = myconnection.open
myCmd.ExecuteNonQuery()
myconnection.close()
End Function
Dan jika masukkan data dengan menggunakan (‘), lalu kita trace maka sintaks SQL nya akan seperti ini
myCmd.CommandText "Insert Into [TbUsaha] (IDUsaha,NamaUsaha) Values ('U06', 'Makan Sia'ng') ;" String
tanda petik tersebut telah membuat sintaks SQL menjadi tidak sempurna dan menimbulkan error.
Oleh karena itu penulis melakukan pengubahan data sebelum program melakukan proses simpan. Tapi apakah setelah dengan melakukan Replace dari satu tanda petik (‘) ke dua tanda petik (“) masalah sudah selesai, penulis rasa tidak. Karena data yang di inputkan user secara otomatis telah di ubah oleh program (berarti data tersebut sudah tidak valid lagi). Dan menurut penulis sintaks diatas tidak layak dipakai lagi dan sintaks yang benar adalah seperti dibawah ini :
Public Function AccessUsahaInsert(ByVal IDUsaha As String, ByVal NamaUsaha As String)
Dim myconnection As New AccessData.DatabaseConnection
Dim SqlString As String = "Insert Into [TbUsaha] " _
& " (IDUsaha,NamaUsaha) Values (" _
& " ?,?);"
Dim myCmd As New OleDbCommand(SqlString)
myCmd.Connection = myconnection.open
myCmd.CommandType = CommandType.Text
myCmd.Parameters.Add("IDUsaha", IDUsaha)
myCmd.Parameters.Add("NamaUsaha", NamaUsaha)
myCmd.ExecuteNonQuery()
myconnection.close()
End Function
Dan jika menggunakan Vb 2005 sintaks nya seperti dibawah ini.
Public Function AccessUsahaInsert(ByVal IDUsaha As String, ByVal NamaUsaha As String) As OleDbDataReader
Dim myconnection As New AccessData.DatabaseConnection
Dim SqlString As String = "Insert Into [TbUsaha] " _
& " (IDUsaha,NamaUsaha) Values (" _
& " ?,?);"
Dim myCmd As New OleDbCommand(SqlString)
myCmd.Connection = myconnection.open
myCmd.CommandType = CommandType.Text
myCmd.Parameters.AddWithValue("IDUsaha", IDUsaha)
myCmd.Parameters.AddWithValue("NamaUsaha", NamaUsaha)
Dim result As OleDbDataReader = myCmd.ExecuteReader(CommandBehavior.CloseConnection)
Return result
End Function
Semoga artikel ini bermanfaat dan membuat kita lebih baik dalam pemograman..
Wassalam
1 comment:
Mas anda menggunakan vb.net brp,,??di vb.net 2003 koq g'bz,,klau boleh Q minta file project'nya,,tolong dkrim ke zie.narsiz@yahoo.com
Terima Kasih..
Post a Comment