Có một số vấn đề với mã này.
Điều quan trọng nhất là bạn không đặt Kết nối thuộc tính, vì vậy lệnh không có cách nào biết cách kết nối với cơ sở dữ liệu.
Tôi cũng thực sự khuyên bạn nên sử dụng bằng cách sử dụng và cả tham số hóa truy vấn của bạn:
Cuối cùng, không khai báo kết nối và lệnh bên ngoài hàm trừ khi bạn cần. Bạn chỉ nên giữ kết nối và lệnh miễn là bạn cần chúng.
Vì vậy, hàm của bạn sẽ trông giống như sau:
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
Lưu ý rằng hiện tại, bạn sẽ luôn trả về 0. Thay vì phải kiểm tra giá trị được trả về từ hàm, ví dụ trên sẽ đơn giản đưa ra một ngoại lệ. Điều này làm cho mã rõ ràng hơn một chút (vì người gọi sẽ phải hiểu rằng 0 là một điều kiện lỗi) và, nếu bạn cần xử lý ngoại lệ, chỉ cần bọc lệnh gọi hàm này trong một mã Try-Catch > khối