关于网页中 OleDbDataReader对象读取ACCESS中数据

```protected void Page_Load(object sender, EventArgs e)
{
DB.setDBPath(Page.Server.MapPath("/App_Data/TestModel.accdb")); //连接ACCESS表
OleDbConnection myconn = DB.createConnection();
myconn.Open();
string select = "select * from UserInfo";
OleDbCommand cmd = new OleDbCommand(select, myconn);
OleDbDataReader a = cmd.ExecuteReader();
string b=a[0].ToString();
a.Close();

    }

ACCESS数据库中是有数据的,然后用OleDbDataReader对象就是读取不出来,如string b=a[0].ToString(),调试时报错:
“System.InvalidOperationException”类型的异常在 System.Data.dll 中发生,但未在用户代码中进行处理
其他信息: 不存在此行/列的数据。
但是对OleDbDataReader对象调用Read()方法,返回True,表明不是空表。


于是我换了种方式,我用 DataSet访问则可以显示在GV控件上,代码如下:


        DB.setDBPath(Page.Server.MapPath("/App_Data/TestModel.accdb"));
        OleDbConnection myconn = DB.createConnection();
        myconn.Open();
        string selectStr = "select * from UserInfo";
        OleDbDataAdapter oda = new OleDbDataAdapter(selectStr, myconn);
        DataSet ds = new DataSet();
        oda.Fill(ds);
        GV.DataSource = ds;
        GV.DataBind();
        myconn.Close();

求大神们指点下为什么OleDbDataReader会出问题,谢谢!!!!
初学者。。。



OleDbDataReader a = cmd.ExecuteReader();
后面加上
a.Read();

参考MSDN, OleDbCommand.ExecuteReader 方法返回的是一个 OleDbDataReader 对象,需要通过OleDbDataReader.Read 方法使 OleDbDataReader 前进到下一条记录来读取。这两个参考页面上都有示例,可以参考。