using (OleDbConnection conn = new OleDbConnection(ConnectionString.ConnString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
cmd.CommandText = "select * from 新闻 where 编号=@编号";
cmd.Parameters.AddWithValue("@编号", Request.QueryString["id"].ToString());
cmd.Connection = conn;
conn.Open();
OleDbDataReader odr = cmd.ExecuteReader(CommandBehavior.SingleRow);
if (odr.Read())
{
la_Title.Text = odr["标题"].ToString();
Li_Date.Text = odr["发布时间"].ToString();
Li_LaiYuan.Text = odr["来源"].ToString();
Li_Content.Text = odr["内容"].ToString();
}
}
catch
{
}
finally
{
conn.Close();
}
}
}
运行上面的代码时报错:试读取或写入受保护的内存。这通常指示其他内存已损坏
其实是由于代码的错误造成的,原因是由于OleDbDataReader对象没有关闭
using (OleDbConnection conn = new OleDbConnection(ConnectionString.ConnString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
cmd.CommandText = "select * from 新闻 where 编号=@编号";
cmd.Parameters.AddWithValue("@编号", Request.QueryString["id"].ToString());
cmd.Connection = conn;
conn.Open();
OleDbDataReader odr = cmd.ExecuteReader(CommandBehavior.SingleRow);
using (odr)
{
if (odr.Read())
{
la_Title.Text = odr["标题"].ToString();
Li_Date.Text = odr["发布时间"].ToString();
Li_LaiYuan.Text = odr["来源"].ToString();
Li_Content.Text = odr["内容"].ToString();
}
}
}
catch
{
}
finally
{
conn.Close();
}
}
}
本文详细解析了在使用OleDbDataReader进行数据库操作时遇到的内存读写错误,通过示例代码展示了如何正确使用using语句来确保资源的正确释放,避免内存泄漏问题。
1731

被折叠的 条评论
为什么被折叠?



