Wykonywanie polecenia

Każdy dostawca danych programu .NET Framework dołączony do programu .NET Framework ma własny obiekt polecenia, który dziedziczy z DbCommandprogramu . Dostawca danych .NET Framework dla OLE DB zawiera OleDbCommand obiekt, Dostawca danych .NET Framework dla programu SQL Server zawiera SqlCommand obiekt, Dostawca danych .NET Framework dla ODBC zawiera OdbcCommand obiekt, a Dostawca danych .NET Framework dla oracle zawiera OracleCommand obiekt. Każdy z tych obiektów uwidacznia metody wykonywania poleceń na podstawie typu polecenia i żądanej wartości zwracanej, jak opisano w poniższej tabeli.

Polecenie Wartość zwracana
ExecuteReader Zwraca DataReader obiektu.
ExecuteScalar Zwraca pojedynczą wartość skalarną.
ExecuteNonQuery Wykonuje polecenie, które nie zwraca żadnych wierszy.
ExecuteXMLReader Zwraca wartość XmlReader. Dostępny tylko dla SqlCommand obiektu.

Każdy obiekt polecenia silnie typizowanego obsługuje CommandType również wyliczenie określające sposób interpretowania ciągu polecenia zgodnie z opisem w poniższej tabeli.

Commandtype opis
Text Polecenie SQL definiujące instrukcje do wykonania w źródle danych.
StoredProcedure Nazwa procedury składowanej. Możesz użyć Parameters właściwości polecenia, aby uzyskać dostęp do parametrów wejściowych i wyjściowych i zwracanych wartości, niezależnie od metody, która Execute jest wywoływana. W przypadku używania ExecuteReaderfunkcji wartości zwracane i parametry wyjściowe nie będą dostępne do momentu DataReader zamknięcia.
TableDirect Nazwa tabeli.

Przykład

W poniższym przykładzie kodu pokazano, jak utworzyć SqlCommand obiekt w celu wykonania procedury składowanej, ustawiając jego właściwości. Obiekt SqlParameter służy do określania parametru wejściowego procedury składowanej. Polecenie jest wykonywane przy użyciu ExecuteReader metody , a dane wyjściowe z elementu SqlDataReader są wyświetlane w oknie konsoli.

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

Rozwiązywanie problemów z poleceniami

Program .NET Framework Dostawca danych dla programu SQL Server dodaje liczniki wydajności, aby umożliwić wykrywanie sporadycznych problemów związanych z nieudanymi wykonaniami poleceń. Aby uzyskać więcej informacji, zobacz Liczniki wydajności.

Zobacz też