博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

阅读器关闭时Read的尝试无效

Posted on 2008-11-02 17:47  雷雷  阅读(830)  评论(0编辑  收藏  举报

错误原因:
执行DataReader时,在方法中关闭了数据库连接。DataReader特点是必须是基于数据库打开连接的open(),一旦你的connectionclose()掉以后就什么也取不到了,所以DataReader不能用,所以在项目中最好不要将DataReader这些基于连接的对象做为参数来进行传递,可以直接使用。

解决方法:如果非要传参数的话,可以将DataReader转化为datatable用来读取数据,或者将数据库的打开和关闭用代码控制好,最好是将open()close()写成独立的方法。如:

     SqlConnection conn;

    /// <summary>
    /// 打开连接
    /// </summary>
    public void openConn()
    {
        conn = new SqlConnection("Data Source=192.168.1.2;User Id=sa;Password=sa;Initial Catalog=MyDB;");
        conn.Open();
    }

    /// <summary>
    /// 关闭连接
    /// </summary>
    private void closeConn()
    {
        try
        {
            conn.Close();
            conn.Dispose();
        }
        catch
        {
            conn = null;
        }
    }