C# - Mysql DateTime compare

本文关键字:compare DateTime Mysql | 更新日期: 2023-09-27 18:28:00

下面的代码不起作用。

public int getRecord(int number, DateTime startingDateTime)
{ 
    int id=-1; 
    string stm = "SELECT * FROM history WHERE number= '" 
        + number + "' AND 'startingDateTime' = '" + startingDateTime+ "'"; 
    try
    {
        con.Open();
        cmd = new MySqlCommand(stm, con);
    }
    catch (Exception e)
    {
        ErrorMessage = e.Message;
        con.Close();
        return 0;
    }
    try
    {
        rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            id = rdr.GetInt32(0);
        }
    }
    catch (Exception e)
    {
        ErrorMessage = e.Message;
        con.Close();
        return 0;
    }
    con.Close();
    return 1;
}

语法没有问题,至少它没有警告我。但错误是:

调用Read()之前访问字段的尝试无效

我想比较两个日期时间变量。这个逻辑对我来说很好。如果有人知道诀窍,我正在等待。

C# - Mysql DateTime compare

没有必要存储数字和DateTime值。你有个坏习惯要改掉。将列更改为整数类型和日期时间类型。在列名中使用单引号是没有意义的。只需删除它们。

也可以使用using语句自动处理连接、命令和读取器,而不是手动调用Close方法。

using(var con = new MySqlConnection(conString))
using(var stm = con.CreateCommand())
{
   stm.CommandText = "SELECT * FROM history WHERE number = @number AND startingDateTime = @start";
   stm.Parameters.AddWithValue("@number", number);
   stm.Parameters.AddWithValue("@start", startingDateTime);
   using(var rdr = cmd.ExecuteReader())
   {
       id = rdr.GetInt32(0);
   }
}