Parancs végrehajtása
A .NET-keretrendszer minden .NET-keretrendszer adatszolgáltató saját parancsobjektummal rendelkezik, amely a következőtől DbCommandöröklődik: . Az OLE DB-hez készült .NET-keretrendszer adatszolgáltató tartalmaz egy OleDbCommand objektumot, az SQL Server .NET-keretrendszer adatszolgáltatója tartalmaz egy SqlCommand objektumot, az ODBC .NET-keretrendszer adatszolgáltatója pedig egy OdbcCommand objektumot, az Oracle .NET-keretrendszer adatszolgáltatója pedig egy OracleCommand Objektum. 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 | Visszatérési érték |
---|---|
ExecuteReader |
Objektumot DataReader ad vissza. |
ExecuteScalar |
Egyetlen skaláris értéket ad vissza. |
ExecuteNonQuery |
Olyan parancsot hajt végre, amely nem ad vissza sorokat. |
ExecuteXMLReader |
XmlReaderEgy . Csak objektumhoz SqlCommand é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.
CommandType | 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. A használat során ExecuteReader a visszaadott értékek és a kimeneti paraméterek csak a DataReader lezárás 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("{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
Hibaelhárítási parancsok
Az SQL Server .NET-keretrendszer adatszolgáltatója teljesítményszámlálókat ad hozzá a sikertelen parancsvégrehajtásokkal kapcsolatos időszakos problémák észleléséhez. További információ: Teljesítményszámlálók.