我有以下代码来从 db 检索数据,当我从 Visual Studio 运行代码分析时,它建议我调用 dispose 方法 on和SqlConnection
objects 。DataTable
SqlDataAdapter
SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString);
SqlCommand cmd = sqlconn.CreateCommand();
cmd.CommandText = "SELECT * FROM tbl_serial WHERE serial = @serial";
cmd.Parameters.AddWithValue("@serial", txtQuery.Text);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
try
{
sqlconn.Open();
da.SelectCommand = cmd;
da.Fill(dt);
}
catch (SqlException ex)
{
lblStatus.Text = ex.Message;
}
finally
{
sqlconn.Close();
}
if (dt.Rows.Count > 0)
{
lblStatus.Text = "FOUND!";
}
else
{
lblStatus.Text = "NOT FOUND!";
}
这是我第一次这样做,我sqlconn
就这样调用了 dispose 方法 -
finally
{
sqlconn.Close();
sqlconn.Dispose();
}
但是,Visual Studio 像这样警告我——
CA2202:Microsoft.Usage:对象“sqlconn”可以在方法“test_search.Unnamed1_Click(object, EventArgs)”中多次处理。为避免生成 System.ObjectDisposedException,您不应在对象上多次调用 Dispose。:行:41
所以我想知道什么时候应该正确调用 dispose 方法。