今天调试“前人”代码,发现一个错误:
使用MySqlDataReader reader = cmd.ExecuteReader() 查询MySQL数据库时,reader.HasRows永远等于false。
去掉查询条件中的时间参数后,结果正常。
所以,问题定位在时间格式上。
最后的修改方式如下:
//----原始代码 begin------------
//cmd.CommandText = "SELECT speed,Slope,MET,resistance FROM treadmilldata WHERE PatientID=@PatientID AND Time >= @starttime AND Time <= @endtime";
//cmd.Parameters.AddWithValue("@starttime", st);
//cmd.Parameters.AddWithValue("@endtime", et);
//cmd.Parameters.AddWithValue("@PatientID", pid);
//----原始代码 end--------------
cmd.CommandText = "SELECT speed,Slope,MET,resistance FROM treadmilldata WHERE PatientID=@PatientID AND Time >= DATE_FORMAT(@starttime,'%Y-%m-%d %H:%i:%s') AND Time <= DATE_FORMAT(@endtime,'%Y-%m-%d %H:%i:%s')";
cmd.Parameters.AddWithValue("@PatientID", pid);
MySqlParameter mySqlParameter4StartTime = new MySqlParameter
{
ParameterName = "@starttime",
DbType = System.Data.DbType.DateTime,
Value = st
};
cmd.Parameters.Add(mySqlParameter4StartTime);
MySqlParameter mySqlParameter4EndTime = new MySqlParameter
{
ParameterName = "@endtime",
DbType = System.Data.DbType.DateTime,
Value = et.ToString()
};
cmd.Parameters.Add(mySqlParameter4EndTime);