執行命令
適用於:.NET Framework .NET .NET Standard
Microsoft SqlClient Data Provider for SQL Server 具有繼承自 DbCommand 的 SqlCommand 物件。 此物件會公開根據命令類型與所需傳回值來執行命令的方法,如下表所述。
命令 | 傳回值 |
---|---|
ExecuteReader |
傳回 DataReader 物件。 |
ExecuteScalar |
傳回單一純量值。 |
ExecuteNonQuery |
執行不會傳回任何資料列的命令。 |
ExecuteXMLReader |
傳回 XmlReader。 僅適用於 SqlCommand 物件。 |
每個強型別 (Strongly Typed) 的命令物件也會支援 CommandType 列舉型別 (Enumeration),此型別可指定解譯命令字串的方式。
CommandType | 描述 |
---|---|
Text |
定義要於數據源執行之語句的 SQL 命令。 |
StoredProcedure |
預存程序的名稱。 您可以使用命令的 Parameters 屬性來存取輸入和輸出參數及傳回值,不論呼叫的是哪一個 Execute 方法。 |
TableDirect |
資料表的名稱。 |
重要
在使用 ExecuteReader
時,無法在 DataReader
關閉之前存取傳回值和輸出參數。
範例
下列程式碼範例示範如何建立 SqlCommand 物件,以藉由設定其屬性來執行預存程序。 用來指定預存程序輸出參數的 SqlParameter 物件。 此命令是藉由使用 ExecuteReader 方法來執行,而 SqlDataReader 的輸出則會顯示在主控台視窗中。
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();
}
}
}
針對命令進行疑難排解
Microsoft SqlClient Data Provider for SQL Server 會新增診斷計數器,讓您偵測與命令執行失敗相關的間歇性問題。 如需詳細資訊,請參閱 SqlClient 中的診斷計數器。