Det finns några problem med den här koden.
Det viktigaste är att du inte ställer in kommandots Anslutning egenskap, så kommandot har inget sätt att veta hur man ansluter till databasen.
Jag rekommenderar också starkt att du använder med , och även parameterisering din fråga:
Slutligen, förklara inte anslutningen och kommandot utanför funktionen om du inte behöver. Du bör bara behålla anslutningen och kommandot så länge du behöver dem.
Så din funktion skulle sluta se ut så här:
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
Observera att du för närvarande kommer att returnera 0 hela tiden. Istället för att behöva kontrollera värdet som returneras från funktionen, kommer exemplet ovan helt enkelt att skapa ett undantag. Detta ger en lite renare kod (eftersom den som ringer måste förstå att 0 är ett feltillstånd), och om du behövde hantera undantaget, slå helt enkelt in anropet till den här funktionen i en Try-Catch
blockera