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
  {  }
  } 

解决方案 »

  1.   

    e.Row.Cells[12].Text = typeSdr["district_name"].ToString();
    typeSdr.Dispose();
      

  2.   

    LZ在使用datareader的时候需要注意下,在或者datareader的方法里面不能关闭连接,不然得到的datareader将无法使用,但是你如果不关闭连接的话在使用datareader后将它释放掉,此时连接也不算关闭的,所以建议datareader的写法为public static OracleDataReader getRow(string sql)
    {
      try
      {
      OracleConnection con = createCon();
      con.Open();
      OracleCommand com = new OracleCommand(sql, con);
      return com.ExecuteReader(CommandBehavior.CloseConnection);
      }//在获取datareader的时候加了红色的部分后,将datareader释放时将同时断开连接
      catch
      {
      return null;
      }
      finally
      { }
    }//使用datareader
    using(OracleDataReader odr=getRow(sql))
    {
      //你的方法
    }希望对LZ有帮助