Parancs végrehajtása

A .NET-keretrendszerhez tartozó minden .NET-keretrendszer-adatszolgáltató saját parancsobjektummal rendelkezik, amely a .NET-keretrendszertől DbCommandöröklődik. Az OLE DB-hez készült .NET-keretrendszer adatszolgáltatója tartalmaz egy OleDbCommand objektumot, az SQL Serverhez készült .NET-keretrendszer adatszolgáltatója tartalmaz egy SqlCommand objektumot, az ODBC-hez készült .NET-keretrendszer adatszolgáltatója tartalmaz egy OdbcCommand objektumot, és az Oracle-hez készült .NET-keretrendszer adatszolgáltatója tartalmaz egy OracleCommand objektumot. Ezen objektumok mindegyike a parancs típusa és a kívánt visszatérési érték alapján teszi elérhetővé a parancsok végrehajtásának módszereit az alábbi táblázatban leírtak szerint.

Parancs Visszaadott érték
ExecuteReader Egy DataReader objektumot ad vissza.
ExecuteScalar Egyetlen skaláris értéket ad vissza.
ExecuteNonQuery Olyan parancsot hajt végre, amely nem ad vissza sorokat.
ExecuteXMLReader Visszaad egy XmlReader. Csak egy SqlCommand objektumhoz érhető el.

Minden erősen beírt parancsobjektum támogatja az enumerálást CommandType is, amely meghatározza a parancssztring értelmezésének módját az alábbi táblázatban leírtak szerint.

Parancstípus Leírás
Text Az adatforrásban végrehajtandó utasításokat meghatározó SQL-parancs.
StoredProcedure A tárolt eljárás neve. A parancs tulajdonságával hozzáférhet a Parameters bemeneti és kimeneti paraméterekhez, és visszaadhatja az értékeket, függetlenül attól, hogy melyik Execute metódust hívják meg. Amikor a ExecuteReader-t használja, a visszaadott értékek és a kimeneti paraméterek csak a DataReader lezárása után lesznek elérhetők.
TableDirect Egy tábla neve.

Példa

Az alábbi példakód bemutatja, hogyan hozhat létre objektumot SqlCommand egy tárolt eljárás végrehajtásához a tulajdonságainak beállításával. A SqlParameter rendszer egy objektumot használ a tárolt eljárás bemeneti paraméterének megadására. A parancs végrehajtása a ExecuteReader metódussal történik, és a kimenet a SqlDataReader konzolablakban jelenik meg.

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($"{reader[0]}: {reader[1]:C}");
                }
            }
            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

Hibaelhárítási parancsok

Az SQL Serverhez készült .NET-keretrendszer adatszolgáltatója teljesítményszámlálókat ad hozzá, amelyek lehetővé teszik a sikertelen parancsvégrehajtásokkal kapcsolatos időszakos problémák észlelését. További információ: Teljesítményszámlálók.

Lásd még