DataReader是占用数据库连接的,所以得先把那个给关掉

解决方案 »

  1.   


    你的意思我在while里就要关掉?
      

  2.   

    而且仅仅发生在while情况,如果用IF的话单条执行没有问题。另外换成SQLSERVER之类的,同样的程序用WHILE也没问题
      

  3.   

    新建一个Conneciton给msm1使用
    或是把全部数据读到内存中
      

  4.   

    你说的方法我试过了,这时就报这个错误:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 ---> System.IO.IOException: 无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。。 ---> System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
      

  5.   

    oddr.Close();要放在 MySqlCommand msm1 = new MySqlCommand(sqlt, mys);这句话之前。
    否则当然会出错。你datareader都没有关。
     if (oddr.Read())
                        {
                            if (oddr["isbn"].ToString().Trim().Length != 10)
                            {
                                MessageBox.Show(msd["id"].ToString());
                                //string sqlt = "update software set bianma='" + oddr["uni_no"].ToString().Trim() + "',isbn='" + oddr["isbn"].ToString().Trim() + "' where trim(id)='2688'";
                                string sqlt = "update software set bianma='" + oddr["uni_no"].ToString().Trim() + "',isbn='" + oddr["isbn"].ToString().Trim() + "' where trim(id)='" + ids + "'";
                                MySqlCommand msm1 = new MySqlCommand(sqlt, mys);                            oddr.Close();
                                 msm1.ExecuteNonQuery();
                                //msm1.Update(sqlt, mys);
                                //msm1.ExecuteNonQuery();
                            }
                            else
                            {oddr.Close();}
                        }
                        else                    {oddr.Close();}
      

  6.   

    你说的这个方法我试过了,还是报之前的错,而且报错的是没有关闭MYSQL的datareader,oddr是连接oracle的
      

  7.   

    那就把msd和ODDR都关掉。先前没看到你又是SQL又是OLDB的。
      

  8.   

    oddr关掉没问题,但是msd关掉的话while就不能循环了。
      

  9.   

    msm1.Close(); ?
    msm1不是DATAREADER
      

  10.   

    那就不用dataread,用dataset来替代msd
      

  11.   


    嗯,那为什么同样的语句,SQLSERVER和ORACEL都没问题,难道是脏读的问题?
      

  12.   

    应该不是数据读脏的问题。用SQLSEVER没有问题应该是因为你的SQLCONNECTION没有被sqldatareader占用。