帮忙调试以下的代码?为何出错。
SqlDataReader   recu   =   DBOP.GetDataReader( "Select   *   from   UserS   where   UserID= ' "   +   TextBox1.Text.ToString()   +    " '   and   Password= ' "   +    
                                     TextBox2.Text.ToString()   +    " ' "); 
 if   (recu.Read())   //这句提示报错。(阅读器关闭时Read的尝试无效) 
 { 
       userId   =   recu[ "UserID "].ToString();       
    } 
 recu.Close(); 
 //DBOP.GetDataReader   是写的一个共用类中方法,返回一个SqlDataReader   。代码如下 
    public   SqlDataReader   GetDataReader(string   selectSql) 
                         { 
                                     SqlDataReader   RetDataReader; 
                                     SqlConnection   Conn   =   new   SqlConnection(connString); 
                                     try 
                                     { 
                                                 Conn.Open(); 
                                                 SqlCommand   Cmd   =   new   SqlCommand(selectSql,   Conn); 
                                                 RetDataReader   =   Cmd.ExecuteReader();                                              
                                     } 
                                     catch 
                                     { 
                                                 RetDataReader   =   null; 
                                     } 
                                     finally 
                                     { 
                                                 Conn.Close(); 
                                     } 
                                     return   RetDataReader; 
                         }
------解决方案--------------------Conn.Close(); 
 ====================   
 连接都关了,还那里有RetDataReader,DataReader是需要永久连接的,如果你的方法返回值需要他(个人不推荐这样做),那么就不能关闭连接! 
------解决方案--------------------1. 如果还是用返回 DataReader的方法,在调用出使用完就关闭连接。虽然CLR会帮我们自动回收垃圾,但这个缺点也是比较明显的,如果忘记关闭连接,可能会产生一些问题。 
 2. 如果是分层调用,而且打算对数据进行一些更改,可以考虑使用DataSet,这样性能上会有些损耗(占Web服务器的一些内存)