Köra ett kommando

Gäller för: .NET Framework .NET .NET Standard

Ladda ned ADO.NET

Microsoft SqlClient-dataprovidern för SQL Server har SqlCommand objekt som ärver från DbCommand. Det här objektet exponerar metoder för att köra kommandon baserat på typen av kommando och önskat returvärde, enligt beskrivningen i följande tabell.

Befallning Returvärde
ExecuteReader Returnerar ett DataReader objekt.
ExecuteScalar Returnerar ett enskilt skalärt värde.
ExecuteNonQuery Kör ett kommando som inte returnerar några rader.
ExecuteXMLReader Returnerar en XmlReader. Endast tillgängligt för ett SqlCommand objekt.

Varje starkt skrivet kommandoobjekt stöder också en CommandType uppräkning som anger hur en kommandosträng tolkas, enligt beskrivningen i följande tabell.

CommandType Description
Text Ett SQL-kommando som definierar de instruktioner som ska köras i datakällan.
StoredProcedure Namnet på den lagrade proceduren. Du kan använda Parameters egenskapen för ett kommando för att komma åt indata- och utdataparametrar och returnera värden, oavsett vilken metod som Execute anropas.
TableDirect Namnet på en tabell.

Viktigt!

När du använder ExecuteReaderkommer returvärden och utdataparametrar inte att vara tillgängliga förrän den DataReader har stängts.

Example

I följande kodexempel visas hur du skapar ett SqlCommand objekt för att köra en lagrad procedur genom att ange dess egenskaper. Ett SqlParameter objekt används för att ange indataparametern till den lagrade proceduren. Kommandot körs med metoden ExecuteReader och utdata från SqlDataReader visas i konsolfönstret.

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

        // Add the input parameter and set its properties.
        SqlParameter parameter = 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 (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();
        }
    }
}

Felsökningskommandon

Microsoft SqlClient-dataprovidern för SQL Server lägger till diagnostikräknare så att du kan identifiera tillfälliga problem som rör misslyckade kommandokörningar. Mer information finns i Diagnostikräknare i SqlClient.

Se även