如何从.net c#中读取输出变量

本文关键字:读取 输出 变量 net | 更新日期: 2023-09-27 18:08:42

有人知道如何从。net c#中读取输出变量吗?

的例子:

如果我有以下存储过程,它将返回输出变量(@customer_id, @customer_name, @customer_address, @customer_age)而不是选择变量,我如何使用以下代码读取输出变量?

mySqlCommand.CommandText = "EXEC app_customers @name=" + sName.Text;
mySqlConnection.Open();
SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
while (mySqlDataReader.Read())
{
}

如何从.net c#中读取输出变量

当结果是单个值时(或者如果您只对第一列中的第一个值感兴趣),使用方法ExecuteScalar

返回一个对象,只需将其强制转换为期望的类型。

int id = (int)mySqlCommand.ExecuteScalar();

注意:你调用过程的方式不是正常的方式。设置命令引用存储过程,然后为command.Parameters集合添加适当的参数。使用"exec ..."调用过程不是最佳实践,甚至可能使您容易受到攻击。如果你需要更多关于执行这样一个调用的信息,从这里开始。

编辑:

如果它真的是一个输出参数你需要捕获(我相信我误解了你的问题),那么上面的段落更适用。考虑以下方法:

mySqlCommand.CommandText = "app_customers";
mySqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
mySqlCommand.Parameters.AddWithValue("@name", theValue);
var customerIdParam = mySqlCommand.Parameters.Add("@customer_id", System.Data.SqlDbType.Int);
customerIdParam.Direction = System.Data.ParameterDirection.Output;
// add more parameters, setting direction as appropriate
mySqlCommand.ExecuteNonQuery();
int customerId = (int)customerIdParam.Value;
// read additional outputs