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

时间:2011-09-15 04:05:05

标签: c# .net

有谁知道如何从.net c#?

读取输出变量

示例:

如果我有以下存储过程将返回输出变量(@customer_id, @customer_name, @customer_address, @customer_age)而不是select变量,如何用以下内容读取输出变量?

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

1 个答案:

答案 0 :(得分:7)

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

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

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

注意:调用过程的方式不是正常的方法。设置命令以引用存储过程,然后将适当的参数添加到command.Parameters集合。使用"exec ..."调用该过程不是最佳做法,甚至可能使您容易受到攻击。如果您需要有关执行此类呼叫的更多信息,请start here.

修改

如果它确实是输出参数你需要捕获(我相信我误读了你的问题),那么上面的段落更适用。考虑这种方法:

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