Има няколко проблема с този код.
Най-важното е, че не задавате Връзка свойство, така че командата няма начин да знае как да се свърже с базата данни.
Също така силно препоръчвам да използвате използвайки , както и параметризиране вашата заявка:
И накрая, не декларирайте връзката и командата извън функцията, освен ако не е необходимо. Трябва да поддържате връзката и командването само толкова дълго, колкото имате нужда от тях.
Така че вашата функция ще изглежда така:
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
Имайте предвид, че в момента ще връщате 0 през цялото време. Вместо да се налага да проверява стойността, върната от функцията, горният пример просто ще хвърли изключение. Това прави малко по-изчистен код (тъй като повикващият трябва да разбере, че 0 е състояние на грешка) и, ако трябва да се справите с изключението, просто обвийте извикването на тази функция в Try-Catch
блокиране