读书人

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

发布时间: 2012-03-21 13:33:15 作者: rapoo

怎样释放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)){  //你的方法} 

读书人网 >asp.net

热点推荐