December 9, 2008

Cara baik dalam melakukan penginputan data pada vb.net dengan Access sebagai DB

Jika para pembaca jeli dan teliti pada setiap artikel saya terlebih pada Step 1 yang melakukan pengolahan data dengan Access sebagai Database nya, pasti akan timbul pertanyaan pada saya atau mungkin diri sendiri, kenapa penulis artikel ini menggunakan fungsi Replace terlebih dahulu sebelum melakukan proses Insert dan Update seperti dibawah ini
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:

Anonymous said...

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..