OleDbDataReader reader ;
  OleDbDataReader reader1 ;
  OleDbCommand myCommand;
 string strCom;
strCom = "SELECT * FROM Catalogue" ;
myCommand = new OleDbCommand ( strCom , myConn ) ;
reader = myCommand.ExecuteReader ();
while(reader.Read ())
{
students=reader["Catalogue"].ToString();
if(students="111")
{
strCom = "SELECT * FROM grade where Catalogue_id=1" ;
OleDbCommand myCommand1 = new OleDbCommand ( strCom , myConn ) ;
reader1 = myCommand1.ExecuteReader (); while(reader1.Read ())
{
//读出这个表里的每条记录的每个字段的信息
}
reader1.Close ();
}

这样写有错,怎么修改呢
  1,在一个库里有两个表
  2,先打开一个表,读出其中的每一条记录的某个字段的值,判断是否为111
  3,是则打开另一个表把里面的每一条记录的每个字段的值取出来
  我那样写有错,不知道怎么写,谢谢

解决方案 »

  1.   

    如果是读出“111”就不再继续读取.
    把reader1.Close ();
    改为
    reader1.Close ();
    break;试一下
      

  2.   

    不是呀我要判断第一表的每一条记录呀
    OleDbDataReader reader ;
      OleDbDataReader reader1 ;
    注意这两个不一样
      

  3.   

    用dataset行不行?
    ds.fill("table");
    foreach(DataRow r in ds.Table["Table"].Rows){
    if(r["filed"]=111){//do something
    }试试,good luck
      

  4.   

    qjzrd(学问学问,边学边问,:)) 你第一个表中是否有多条'111'的数据?
      

  5.   

    发表一下看法,如有错误,欢迎指正.
    1、程序中没有看见myconn,是不是楼主没有贴出来
    2、在reader1.Read时,reader.Read没有关闭,程序应该会报错。因为这两个读都是使用myconn这个连接,在oledb.net中,是会锁定这个myconn连接的数据库的。
    3、这个情况下,是不是用dataset更好。