Share via


Een opdracht uitvoeren

Elke .NET Framework-gegevensprovider die deel uitmaakt van .NET Framework heeft een eigen opdrachtobject dat overneemt van DbCommand. De .NET Framework-gegevensprovider voor OLE DB bevat een OleDbCommand object, de .NET Framework-gegevensprovider voor SQL Server bevat een SqlCommand object, de .NET Framework-gegevensprovider voor ODBC bevat een OdbcCommand object en de .NET Framework-gegevensprovider voor Oracle bevat een OracleCommand object. Elk van deze objecten bevat methoden voor het uitvoeren van opdrachten op basis van het type opdracht en de gewenste retourwaarde, zoals beschreven in de volgende tabel.

Opdracht Retourwaarde
ExecuteReader Retourneert een DataReader object.
ExecuteScalar Retourneert één scalaire waarde.
ExecuteNonQuery Hiermee wordt een opdracht uitgevoerd die geen rijen retourneert.
ExecuteXMLReader Geeft als resultaat een XmlReader. Alleen beschikbaar voor een SqlCommand object.

Elk sterk getypt opdrachtobject ondersteunt ook een CommandType opsomming die aangeeft hoe een opdrachtreeks wordt geïnterpreteerd, zoals beschreven in de volgende tabel.

Commandtype Beschrijving
Text Een SQL-opdracht die de instructies definieert die moeten worden uitgevoerd in de gegevensbron.
StoredProcedure De naam van de opgeslagen procedure. U kunt de Parameters eigenschap van een opdracht gebruiken voor toegang tot invoer- en uitvoerparameters en retourwaarden, ongeacht welke Execute methode wordt aangeroepen. Wanneer u ExecuteReaderretourwaarden en uitvoerparameters gebruikt, zijn deze pas toegankelijk als de DataReader waarde is gesloten.
TableDirect De naam van een tabel.

Opmerking

In het volgende codevoorbeeld ziet u hoe u een SqlCommand object maakt om een opgeslagen procedure uit te voeren door de eigenschappen ervan in te stellen. Een SqlParameter object wordt gebruikt om de invoerparameter voor de opgeslagen procedure op te geven. De opdracht wordt uitgevoerd met behulp van de ExecuteReader methode en de uitvoer van de SqlDataReader opdracht wordt weergegeven in het consolevenster.

static void GetSalesByCategory(string connectionString,
    string categoryName)
{
    using (SqlConnection connection = new(connectionString))
    {
        // Create the command and set its properties.
        SqlCommand command = new()
        {
            Connection = connection,
            CommandText = "SalesByCategory",
            CommandType = CommandType.StoredProcedure
        };

        // Add the input parameter and set its properties.
        SqlParameter parameter = new()
        {
            ParameterName = "@CategoryName",
            SqlDbType = SqlDbType.NVarChar,
            Direction = ParameterDirection.Input,
            Value = categoryName
        };

        // Add the parameter to the Parameters collection.
        command.Parameters.Add(parameter);

        // Open the connection and execute the reader.
        connection.Open();
        using (SqlDataReader reader = command.ExecuteReader())
        {
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Console.WriteLine("{0}: {1:C}", reader[0], reader[1]);
                }
            }
            else
            {
                Console.WriteLine("No rows found.");
            }
            reader.Close();
        }
    }
}
Shared Sub GetSalesByCategory(ByVal connectionString As String, _
    ByVal categoryName As String)

    Using connection As New SqlConnection(connectionString)

        ' Create the command and set its properties.
        Dim command As SqlCommand = New SqlCommand()
        command.Connection = connection
        command.CommandText = "SalesByCategory"
        command.CommandType = CommandType.StoredProcedure

        ' Add the input parameter and set its properties.
        Dim parameter As New SqlParameter()
        parameter.ParameterName = "@CategoryName"
        parameter.SqlDbType = SqlDbType.NVarChar
        parameter.Direction = ParameterDirection.Input
        parameter.Value = categoryName

        ' Add the parameter to the Parameters collection.
        command.Parameters.Add(parameter)

        ' Open the connection and execute the reader.
        connection.Open()
        Using reader As SqlDataReader = command.ExecuteReader()

            If reader.HasRows Then
                Do While reader.Read()
                    Console.WriteLine("{0}: {1:C}", _
                      reader(0), reader(1))
                Loop
            Else
                Console.WriteLine("No rows returned.")
            End If
        End Using
    End Using
End Sub

Problemen met opdrachten oplossen

De .NET Framework-gegevensprovider voor SQL Server voegt prestatiemeteritems toe zodat u onregelmatige problemen met betrekking tot mislukte uitvoeringen van opdrachten kunt detecteren. Zie Prestatiemeteritems voor meer informatie.

Zie ook