有谁知道如何从.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())
{
}
答案 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