Jest kilka problemów z tym kodem.
Najważniejsze jest to, że nie ustawiasz Połączenie właściwość, więc polecenie nie ma możliwości poznania sposobu połączenia z bazą danych.
Gorąco polecam również użycie używanie , a także parametryzowanie Twoje zapytanie:
Na koniec nie deklaruj połączenia i polecenia poza funkcją, chyba że jest to konieczne. Powinieneś utrzymywać połączenie i polecenie tylko tak długo, jak ich potrzebujesz.
Więc twoja funkcja wyglądałaby tak:
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
Pamiętaj, że obecnie przez cały czas będziesz zwracać 0. Zamiast sprawdzać wartość zwróconą z funkcji, powyższy przykład po prostu zgłosi wyjątek. To sprawia, że kod jest nieco czystszy (ponieważ wywołujący musiałby zrozumieć, że 0 jest warunkiem błędu), a jeśli potrzebujesz obsłużyć wyjątek, po prostu zawiń wywołanie tej funkcji w Try-Catch
zablokuj