myCmd.Connection.Open();
myCmd2.Connection.Open();统统写成conn.Open();
conn.Close();

解决方案 »

  1.   

    建议你这个方法private void ddd()
    {
       OleDbCommand myCmd=new OleDbCommand(mysql,conn);
       myCmd.Connection.Open();
       OleDbDataReader dr;
       dr=myCmd.ExecuteReader();
       while(dr.Read())
       {
          myhh=gethw(yclbh,kcsl);//在循环中调用一个函数
       }
    }不用DataReader,改用DataTable
      

  2.   

    我个人很讨厌DR
    说什么资源啊什么的
    我不是很在意
    硬件有的是
    DataReader不爽
      

  3.   

    你在ddd0中先 要把myCmd2.connection.clse() 调用,而且dr只能调用一次,所以会出现这样的情况 ,
           OleDbDataReader dr;
    dr=myCmd2.ExecuteReader();
             dr.read();//这句要做什么用,在前面{   while(dr.Read())}已经调用了,所以在这里不能调用了             .....//  dr.Close();
    myCmd2.Connection.Close();
    return(myhw);
      

  4.   

    我两个地方的DR打开的内容不同呀,如果出现在一个dr.read()的循环中需要再访问一次数据库要怎么做呀?难道不用dr.read()????
      

  5.   

    我在调用子函数时,第一个dr.close()是不能关的呀???
      

  6.   

    如果出现在一个dr.read()的循环中需要再访问一次数据库要怎么做呀?难道不用dr.read()
      

  7.   

    private void button5_Click(object sender, System.EventArgs e)
    {
    SqlConnection con = new SqlConnection("server=localhost;uid = sa;pwd = sa;database = pubs");
    SqlCommand com = new SqlCommand("select * from authors",con);
    con.Open();
    SqlDataReader dr = com.ExecuteReader();
    while(dr.Read())
    {
    dd();
    Console.WriteLine(dr[0].ToString());
    }
    con.Close();
    }
    private void dd()
    {
    SqlConnection con = new SqlConnection("server=localhost;uid = sa;pwd = sa;database = pubs");
    SqlCommand com = new SqlCommand("select * from authors",con);
    con.Open();
    SqlDataReader dr = com.ExecuteReader();
    dr.Close();
    con.Close();
    }两个DR不要用一个链接,重新做一个链接
      

  8.   

    关闭dr,释放资源。
    然后在conn.Open()。
      

  9.   

    关闭dr?
    是在dr里面循环的
    怎么关闭
      

  10.   

    一个dr在打开期间要占用一个Connection