Ada beberapa masalah dengan kode ini.
Yang paling signifikan adalah Anda tidak menyetel Koneksi properti, sehingga perintah tidak memiliki cara untuk mengetahui cara menghubungkan ke database.
Saya juga sangat menyarankan untuk menggunakan menggunakan , dan juga parameterisasi permintaan Anda:
Terakhir, jangan mendeklarasikan koneksi dan perintah di luar fungsi kecuali Anda perlu. Anda hanya boleh menyimpan koneksi dan perintah selama Anda membutuhkannya.
Jadi fungsi Anda akan terlihat seperti:
Public Function add(ByVal area As String, ByVal user As String) As Integer
Dim mydao As New Connection
Using connection As New SqlConnection(mydao.ConnectionString())
Using command As New SqlCommand()
' Set the connection
command.Connection = connection
' Not necessary, but good practice
command.CommandType = CommandType.Text
' Example query using parameters
command.CommandText = "INSERT into Area (Area, user) VALUES (@area, @user)"
' Adding the parameters to the command
command.Parameters.AddWithValue("@area", area)
command.Parameters.AddWithValue("@user", user)
connection.Open()
Return command.ExecuteNonQuery()
End Using ' Dispose Command
End Using ' Dispose (and hence Close) Connection
End Function
Perhatikan bahwa saat ini, Anda akan selalu mengembalikan 0. Daripada harus memeriksa nilai yang dikembalikan dari fungsi, contoh di atas hanya akan mengeluarkan pengecualian. Ini menghasilkan kode yang sedikit lebih bersih (karena penelepon harus memahami bahwa 0 adalah kondisi kesalahan), dan, jika Anda perlu menangani pengecualian, cukup bungkus panggilan ke fungsi ini dalam Try-Catch
blokir