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