Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

ExecuteNonQuery() zum Einfügen

Es gibt ein paar Probleme mit diesem Code.

Das Wichtigste ist, dass Sie die Verbindung -Eigenschaft, sodass der Befehl nicht wissen kann, wie er sich mit der Datenbank verbinden soll.

Ich würde auch dringend empfehlen, mit , und auch parametrieren Ihre Anfrage:

Deklarieren Sie schließlich die Verbindung und den Befehl nicht außerhalb der Funktion, es sei denn, Sie müssen dies tun. Sie sollten die Verbindung und Befehle nur so lange aufrechterhalten, wie Sie sie benötigen.

Ihre Funktion würde also folgendermaßen aussehen:

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

Beachten Sie, dass Sie derzeit immer 0 zurückgeben. Anstatt den von der Funktion zurückgegebenen Wert zu überprüfen, löst das obige Beispiel einfach eine Ausnahme aus. Dies sorgt für etwas saubereren Code (da der Aufrufer verstehen müsste, dass 0 eine Fehlerbedingung ist), und wenn Sie die Ausnahme behandeln müssen, packen Sie den Aufruf dieser Funktion einfach in einen Try-Catch blockieren