MySql HasRows总是返回true

时间:2016-01-18 14:00:15

标签: c# mysql asp.net

我的代码中存在问题:

using (MySqlConnection conn = new MySqlConnection(cnstr))
{
    conn.Open();
    MySqlCommand checkuser = new MySqlCommand("select * from table1 where UserID='A00001' and FHDate < '" + DateTime.Now + "'",conn);
    MySqlDataReader chk = checkuser.ExecuteReader();
    if (chk.HasRows)
    {  .......  }

当FHDate =&#39; 2016-01-17&#39; chk.HasRows返回true是这个正确答案, 但FHDate =&#39; 2016-01-19&#39; chk.HasRows仍然返回true。我能找到我做错的地方吗?

请帮忙。

1 个答案:

答案 0 :(得分:0)

我觉得您的FHDate列是某个日期时间类型,但您提供的DateTime值为string仍然返回true以进行字符串比较。

使用parameterized query添加此DateTime.Now值,并提供其MySqlDbType作为日期时间的参数类型,如果一切都是okey,则应为okey 除此之外的其他。

MySqlCommand checkuser = new MySqlCommand("select * from table1 where UserID='A00001' and FHDate < @date", conn);
checkuser.Parameters.Add("@date", MySqlDbType.Datetime).Value = DateTime.Now;
...

同样使用using语句来处理您的命令和阅读器,就像您为连接所做的那样。