执行命令

适用于: .NET Framework .NET .NET Standard

下载 ADO.NET

Microsoft SqlClient Data Provider for SQL Server 具有从 DbCommand 继承的 SqlCommand 对象。 此对象公开基于命令类型和所需返回值执行命令的方法,如下表所述。

命令 返回值
ExecuteReader 返回一个 DataReader 对象。
ExecuteScalar 返回一个标量值。
ExecuteNonQuery 执行不返回任何行的命令。
ExecuteXMLReader 返回 XmlReader。 只用于 SqlCommand 对象。

每个强类型命令对象还支持指定如何解释命令字符串的 CommandType 枚举,如下表所述。

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 中的诊断计时器

请参阅