首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎样释放DATAREADER的资源呢?该如何处理

2012-03-21 
怎样释放DATAREADER的资源呢??protected void gvxgclinfo_RowDataBound(object sender, GridViewRowEventA

怎样释放DATAREADER的资源呢??
protected void gvxgclinfo_RowDataBound(object sender, GridViewRowEventArgs e)
  {
  if (e.Row.RowType == DataControlRowType.DataRow)
  { //设置图书类型
  string cl_district = e.Row.Cells[12].Text; //获取图书类型编号
  string typeSql = "select * from zxd_cl_district where district_id=" + cl_district;
  OracleDataReader typeSdr = dataOperate.getRow(typeSql);
  typeSdr.Read(); //读取一条记录
  e.Row.Cells[12].Text = typeSdr["district_name"].ToString();
  }
  }
注:getrow如下
public static OracleDataReader getRow(string sql)
  {
  try
  {
  OracleConnection con = createCon();
  con.Open();
  OracleCommand com = new OracleCommand(sql, con);
  return com.ExecuteReader();
  }
  catch
  {
  return null;
  }
  finally
  { }
  } 


[解决办法]
e.Row.Cells[12].Text = typeSdr["district_name"].ToString();
typeSdr.Dispose();
[解决办法]
.Dispose();
[解决办法]
LZ在使用datareader的时候需要注意下,在或者datareader的方法里面不能关闭连接,不然得到的datareader将无法使用,但是你如果不关闭连接的话在使用datareader后将它释放掉,此时连接也不算关闭的,所以建议datareader的写法为

C# code
public static OracleDataReader getRow(string sql){  try  {  OracleConnection con = createCon();  con.Open();  OracleCommand com = new OracleCommand(sql, con);  return com.ExecuteReader([color=#FF0000]CommandBehavior.CloseConnection[/color]);  }//在获取datareader的时候加了红色的部分后,将datareader释放时将同时断开连接  catch  {  return null;  }  finally  { }}//使用datareaderusing(OracleDataReader odr=getRow(sql)){  //你的方法} 

热点排行