我必须调用一个存储过程并获得结果。Dispose()
我知道有多种方法可以做到这一点(就像所有编程一样),我应该通过调用和/或来清理资源Close()
。阅读这个close or dispose问题,我认为我应该使用该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
,但这不是我在这里寻找的,因为我将使用非标量调用的一般格式。