如何关闭connection连接,
我是这样调用的
   OracleDataReader dr = DbHelperOra.ExecuteReader(querysql);
                while (dr.Read())
                {
                    txtmatecode.Text = dr.GetString(0);                }                dr.Close();

解决方案 »

  1.   

    connection.Close()
    或者
    using(OracleConnection connection = new OracleConnection(connectionString))
    {
    using(OracleCommand cmd = new OracleCommand(strSQL,connection))
    {
    try
    {
    }
    }
    }
    就不需要你自己去释放了,出了using块它自己就关闭了
      

  2.   

    删掉这种“类”吧。才3条语句,至于封装什么“类”吗?封装完之后还要写上一个“警告”让调用者担心,何必呢?你在你的自己代码中直接 Copy+Past 这3条语句,而不调用这个什么“类”不就行了。如果要封装一个 SqlHelper,就要在接口上更安全。不要抛出 DbDataReader 作为返回值。
      

  3.   

    获取一组返回实体对象,可能是这样的List<MyDataType> list;
    using (var conn = new OracleConnection(cnStr))
    {
        conn.Open();
        var comm = conn.CreateCommand();
        comm.CommandText = "select * from all_tables where temporary='N'";
        comm.CommandType = System.Data.CommandType.Text;
        var result = from DbDataRecord record in comm.ExecuteReader()
                    let name = (string)record["X_NAME"]
                    where name.EndsWith("E")
                    select new MyDataType{ XName = name,  WSize = (double)record["size"]};
        list = result.ToList();
    }
      

  4.   

    在 using{ } 结束时,自动就会调用 conn.Dispose 的语句。即时是查询抛出了异常也会执行它,因此不需要写 try...catch 语句。