这就是我所拥有的,我只是想知道这是否是正确的方法,如果不是,那将是最佳的。
public static int AddPullSubscription(string connectionString)
{
try
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand("", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
return Convert.ToInt32(returnParameter.Value);
}
}
}
catch (Exception)
{
throw;
}
}
答案 0 :(得分:1)
这取决于您的存储过程的结果。
ExecuteNonQuery:如果只需要受影响的行数。 AFAIK,如果您没有在SP中使用Set NoCount on
,它就可以使用。当然,出于性能目的,请继续。您可以使用@Return_Value
来获取整数值。 example。
ExecuteScalar:如果您要在SQL中仅选择任何受支持类型的值。 example。
ExecuteReader:向前移动选定的记录。 example。
另请查看关于catch(例外)的this article。
答案 1 :(得分:0)
您也可以使用ExecuteScalar
(带整数的样本)
var result =(Int32)cmd.ExecuteScalar();
答案 2 :(得分:0)
你可以尝试一下:
using (var conn = new SqlConnection(connectionString))
{
using (var sqlCmd = new SqlCommand("SEL_StoredProcedure", conn))
{
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
//sqlCmd.Parameters.AddWithValue("@ID", Id);
sqlCmd.Connection.Open();
return cmd.ExecuteScalar() as Int32;
}
}