sql >> Base de Datos >  >> RDS >> Sqlserver

ExecuteNonQuery() para insertar

Hay algunos problemas con este código.

El más importante es que no está configurando la Conexión propiedad, por lo que el comando no tiene forma de saber cómo conectarse a la base de datos.

También recomiendo encarecidamente utilizar using , y también parametrización su consulta:

Finalmente, no declare la conexión y el comando fuera de la función a menos que lo necesite. Solo debe mantener la conexión y el comando durante el tiempo que los necesite.

Entonces su función terminaría pareciéndose a:

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

Tenga en cuenta que actualmente, devolverá 0 todo el tiempo. En lugar de tener que verificar el valor devuelto por la función, el ejemplo anterior simplemente generará una excepción. Esto hace que el código sea un poco más limpio (ya que la persona que llama tendría que entender que 0 es una condición de error) y, si necesita manejar la excepción, simplemente ajuste la llamada a esta función en un Try-Catch bloquear