我要调用存储过程并获得满意的结果。 我知道有这样做的各种方式(与所有程序),我应该通过调用清理资源Dispose()
和/或Close()
读了这接近或处置的问题,我想,我应该使用using
语句,这应该是足够的。 下面就是我正在做我的电话。 我的问题是 - 我会在这个复杂而这将清理所有的资源?
private Int32 CallStoredProcedure(Int32 Id)
{
using (var dt = new DataTable())
{
using (var conn = new SqlConnection(ConnectionString))
{
using (var sqlCmd = new SqlCommand("SEL_StoredProcedure", conn))
{
using (var sda = new SqlDataAdapter(sqlCmd))
{
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@ID", Id);
sqlCmd.Connection.Open();
sda.Fill(dt);
}
}
}
if (dt.Rows.Count == 1)
return Convert.ToInt32(dt.Rows[0]["IDv2"]);
else if (dt.Rows.Count > 1)
throw new Exception("Multiple records were found with supplied ID; ID = " + studentId.ToString());
}
return 0;
}
PS -我知道我可以打电话ExecuteScalar
,但是这不是我要找的,因为在这里我将使用通用格式的非标通话。