是不是你GetDatareader失败了~跟踪调试一下~

解决方案 »

  1.   

    为什么要返回DataReader呢?返回Read出来的值不行吗?
      

  2.   

    finally
                {
                    cn.Close();
                }这里已经关了
    也就是说OleDbDataReader dr=GetDatareader(str);后面的datareader是关闭的
    dr.Read()这里一定要open的,
    所以在OleDbDataReader dr=GetDatareader(str);
                if (dr.Read())
    之间要open一次,就可以了
      

  3.   

    OleCmd中 Connection是否有值?Connectionstring写对没有?整个过程跟踪一下.
      

  4.   

    原因是关闭了DataReader,可以设定执行完再关闭,修改如下:
    public OleDbDataReader GetDatareader(string strSql)
            {
                string strconn = System.Configuration.ConfigurationManager.AppSettings["conn"];
                OleDbConnection cn = new OleDbConnection(strconn);            cn.Open();
                    
                try
                {
                    OleDbCommand OleCmd = new OleDbCommand(strSql, cn);
                    OleDbDataReader OleDr = OleCmd.ExecuteReader(CommandReaderBehavior.
                            CloseConnection);
                    return OleDr;
                }
                finally
                {
                    cn.Close();
                }
            }
                }
      

  5.   

    cn.Close();
    这一句是多余的...CommandReaderBehavior.CloseConnection这个属性会在被调用的DataReader关闭时自动关闭con
      

  6.   

    datareader是保持连接的可以试试这样:
     public OleDbDataReader GetDatareader(string strSql)
            {
                string strconn = System.Configuration.ConfigurationManager.AppSettings["conn"];
                OleDbConnection cn = new OleDbConnection(strconn);            cn.Open();
                    
             
                    OleDbCommand OleCmd = new OleDbCommand(strSql, cn);
                    OleDbDataReader OleDr = OleCmd.ExecuteReader();
                    return OleDr;
               }
    然后:
          OleDbDataReader dr=GetDatareader(str);
                if (dr.Read())
                {
                    lb_stu.Text = dr["stuname"].ToString();
                }
                dr.Close(); //还有关闭数据库连接