我的代码中存在问题:
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。我能找到我做错的地方吗?
请帮忙。
答案 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
语句来处理您的命令和阅读器,就像您为连接所做的那样。