MySqlDataReader myReader = null;//存储查出的数据
       string sqlstr = "select * from tb_know";//存储查询用到的sql字符串语句。
       try
       {
             myReader = DB.ExecuteReader(sqlstr);//在这设置断点(DB.ExecuteReader()是自己封装的获取MySqlDataReader 的方法,附在最下面)
             while (myReader.Read())//单步执行到这里,查看myReader有数据,但是过一会数据就没了
             {
                     /////
             }
       }
       ////数据没了之后继续执行直接跳过while循环。另外如果不设置断点的话,myReader有数据而且能顺利执行while循环得到想要的结果。。不知道是为什么啊???(因为我的另外一处类似的使用MySqlDataReader的地方出现问题进入不了while,我才单步调试发现这个问题) /// <summary>
        /// 返回DataReader
        /// </summary>
        /// <param name="Sqlstr"></param>
        /// <returns></returns>
        public static MySqlDataReader ExecuteReader(String Sqlstr)
        {
            MySqlConnection conn = new MySqlConnection(ConnStr);//返回DataReader时,是不可以用using()的
            MySqlCommand cmd=null;
            try
            {
                conn.Open();
                cmd = new MySqlCommand(Sqlstr, conn);
                return cmd.ExecuteReader();
            }
            catch (MySqlException ex)
            {
                Console.Write(ex.Message);
                return null;
            }
        }

解决方案 »

  1.   

    看来不是mysql的问题
      

  2.   


    没有啊,就是程序开始的时候加载信息到一个下拉列表中。程序完整执行没有任何问题,但是我在那里设置断点停下来就会出现问题,感觉应该是超时之类的问题,但是那个时间又不一定,有时候刚停到断点那去查看myReader里还有结果,但是几秒后再查看myReader的结果集就为空了。而且继续执行就会跳过while循环。实际上我的程序完整运行没有问题了,只是对调试的时候这个现象比较好奇。
      

  3.   

    show variables like "%timeout%"
    貌似会有一个 read_timeout,和一个write_timeout.
    单位是秒。设置长一点试试。