【问题标题】:Checking if current date exists in database using c#使用c#检查当前日期是否存在于数据库中
【发布时间】:2019-07-30 15:21:20
【问题描述】:

我有一个表,我想在其中插入数据一次一天
并实现我想检查当前日期是否已存在于
通过编写这些行来创建数据库

  DateTime date = DateTime.Now;
  MySqlCommand cmd = new MySqlCommand("SELECT * FROM `attendances` WHERE 
                                    `lecture_id` = '" + lecture_id + "' " +
                                  " AND `date` = '"+date.ToShortDateString()+"' ",con);
            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            if (reader.HasRows)
                MessageBox.Show("you can't insert");

            else MessageBox.Show("you can insert");

日期以xxxx-xx-xx这种格式插入到数据库中,尽管使用相同的插入方法,date.ToShortDateString()以这种格式返回日期 xxxx/x/x .


我检查了以正确的格式手动插入日期,但这也没有用,我还尝试在 sql 中使用 DATE 函数,但也没有用。

【问题讨论】:

  • C# 支持准备好的语句,我建议你使用它们。这也是一个供公众使用的程序吗?如果是这样,您不应该在应用程序中对 MySQL 用户/密码进行硬编码,因为可以使用现有的 .NET 反编译器,那么它们就有您的 MySQL 用户名和密码。
  • @RaymondNijland 你是对的,我在我的程序中使用了准备好的语句,但这只是为了测试条件是否正确,谢谢你指出。

标签: c# mysql mongodb winforms


【解决方案1】:

只需应用格式string date = DateTime.Now.ToString("yyyy-MM-dd") 并且不要在 SQL 查询中调用 ToShortDateString()

您还应该使用SqlParameter,因为您的代码容易受到 SQL 注入攻击。

【讨论】:

    【解决方案2】:

    您也可以避免在查询中使用 .NET 的 DateTime 并改用 MySql 的 NOW() 或 UTC_DATE(),这可能会更好;如果您的代码和数据库所在的区域位于不同的时区。

    [...] " AND `date` = DATE(NOW()) ",con);
    

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 1970-01-01
      • 2013-06-25
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2014-03-14
      • 1970-01-01
      相关资源
      最近更新 更多