ADO.使用什么来设置多个输出参数- ExecuteScalar, ExecuteReader或ExecuteNonQu

本文关键字:ExecuteScalar 参数 ExecuteReader ExecuteNonQu 输出 什么 设置 ADO | 更新日期: 2023-09-27 18:11:20

我有以下工作代码。它有一个输入和两个输出参数。我应该使用哪种ado.net方法?

OneInputTwoOutput oneInputTwoOutput = new OneInputTwoOutput();
var Param = new DynamicParameters();
Param.Add("@Input1", Input1);
Param.Add("@Output1", dbType: DbType.Boolean, direction: ParameterDirection.Output);
Param.Add("@Output2", dbType: DbType.Boolean, direction: ParameterDirection.Output);
try
{
    using (SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["connectionString"]))
    {
        using (SqlCommand cmd = new SqlCommand("GetOneInputTwoOutput", con))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@Input1", SqlDbType.Int).Value = Input1;
            cmd.Parameters.Add("@Output1", SqlDbType.Bit).Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@Output2", SqlDbType.Bit).Direction = ParameterDirection.Output;
            con.Open();
            dealerStatus.Output1= (cmd.Parameters["@Output1"].Value != DBNull.Value ? Convert.ToBoolean(cmd.Parameters["@Output1"].Value) : false);
            dealerStatus.Output2= (cmd.Parameters["@Output2"].Value != DBNull.Value ? Convert.ToBoolean(cmd.Parameters["@Output2"].Value) : false);
            con.Close();
        }
    }
}
catch (SqlException err)
{
}

我读了这个链接:获取ADO中的输出参数值。净

建议使用cmd.ExecuteNonQuery()。但即使不使用这个cmd.ExecuteNonQuery(),我也能够设置输出参数。

有人能解释一下吗?这里应该用什么呢?

ADO.使用什么来设置多个输出参数- ExecuteScalar, ExecuteReader或ExecuteNonQu

很简单,真的:

  • 如果您想返回结果集恰好一行,一列(例如从SELECT COUNT(*)...操作或类似的东西),然后使用ExecuteScalar()(简而言之:结果集-一行,一列)

  • 如果你想返回一个结果集有多行,多列-然后使用ExecuteReader()返回一个SqlDataReader,然后可以用来迭代返回的行,并获取所有数据(简而言之:结果集-多行,多列为每一行)

  • (如果您运行的命令返回任何结果集),则使用ExecuteNonQuery()。这通常用于INSERTUPDATEDELETE操作,但如果您的查询只是不返回结果集,而是设置一些输出参数(简而言之:没有返回结果集)

  • ,也可以使用它。