Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

ExecuteNonQuery() pour l'insertion

Il y a quelques problèmes avec ce code.

Le plus important est que vous ne définissez pas la Connexion , la commande n'a donc aucun moyen de savoir comment se connecter à la base de données.

Je recommanderais également fortement d'utiliser en utilisant , et aussi paramétrage votre requête :

Enfin, ne déclarez pas la connexion et la commande en dehors de la fonction, sauf si vous en avez besoin. Vous ne devez conserver la connexion et la commande qu'aussi longtemps que vous en avez besoin.

Ainsi, votre fonction finirait par ressembler à :

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

Notez qu'actuellement, vous retournerez 0 tout le temps. Plutôt que d'avoir à vérifier la valeur renvoyée par la fonction, l'exemple ci-dessus lèvera simplement une exception. Cela rend le code légèrement plus propre (car l'appelant devrait comprendre que 0 est une condition d'erreur), et, si vous avez besoin de gérer l'exception, encapsulez simplement l'appel à cette fonction dans un Try-Catch bloquer