Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

ExecuteNonQuery() para Inserir


Há alguns problemas com este código.

O mais significativo é que você não está configurando o comando Conexão propriedade, então o comando não tem como saber como se conectar ao banco de dados.

Eu também recomendo usar usando , e também parametrização Sua pergunta:

Por fim, não declare a conexão e o comando fora da função, a menos que seja necessário. Você só deve manter a conexão e o comando pelo tempo que precisar.

Então sua função ficaria assim:
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

Observe que, atualmente, você retornará 0 o tempo todo. Em vez de ter que verificar o valor retornado da função, o exemplo acima simplesmente lançará uma exceção. Isso cria um código um pouco mais limpo (já que o chamador teria que entender que 0 é uma condição de erro) e, se você precisar lidar com a exceção, simplesmente envolva a chamada para esta função em um Try-Catch quadra