关于数据库connection与reader相互绑定的疑问
C# code
    public SqliteDataReader ExecuteQuery(string sqlQuery)
    {
        try
        {
        this.connection.Open();
            dbCommand = this.connection.CreateCommand();
            dbCommand.CommandText = sqlQuery;
            DataReader reader = dbCommand.ExecuteReader();
            return reader;        
        }
        catch (System.Exception ex)
        {
            Debug.Log(ex.ToString());
        }
        finally
        {
            this.connection.Close();
        }
        return null;
    }
代码就是这样的. 但是不是ms平台的东西 , 所以部分关键字别较真.
我的意思是: 为什么DataReader reader = dbCommand.ExecuteReader(); 所获取到的 reader 必须是和 connection 绑定的呢? 因为当我 finally 把connection关闭的时候 这个方法返回的reader也不可用了.
但从数据的理论上理解, 我的reader凭什么跟你 sql的connection绑定起来? 有何绑定的必要呢?
从逻辑学角度.  无非就是利用 connection 获得了一个open的连接, 然后通过sql脚本把 数据抓到 connction 对象所控制的内存区域里, 然后 connction 再把这些数据吐出来, 吐给要返回的 reader 上. 然后规定 reader 和 connection没有绑定关系即可.
但是实际上. 不管是之前我在java中遇到的. 还是在c#中遇到的,  所有系统库都倾向于去提供一个 connection 与reader 绑定的访问方法.  这肯定有他的道理的.  但道理是什么呢? 我暂时没想明白. 因为我以为:  提供一个 connection与reader互相没有关系的方法是更有用的.
------解决方案--------------------DataReader并没有把你查的所有数据都放在本地,所以Connection不能销毁。
javax.sql.rowset.CachedRowSet 不懂,根据你的描述应该就是一次性读取数据到本地,.net里可以用DataTable,多张表的话用DataSet,这时connection是可以销毁的。
------解决方案--------------------一本书你不打开你能读么?
------解决方案--------------------