c# - 如何通过 C# 在 Mysql 中插入日期/时间?

标签 c# mysql

我需要在 C# 的 Mysql 表中插入一些数据。 我有三个字段(一个是日期,两个是时间),我需要获取实际的日期和时间。 但是我在插入数据和时间字段时遇到了问题。数据字段有 0000-00-00 和时间字段 2019-04-24 00:00:00。我对其他字段没有任何问题。

我已经尝试使用 ToString() 的不同选项、TryParse 和我在此页面上看到的不同解决方案,但它们都不起作用,也不是我所需要的。

我给你我的代码:

    public static int SignEntry(MySqlConnection connection, string nif)
    {
        int ret;
        int active = 1;

        DateTime timeNow= DateTime.Now;
        timeNow.ToString("HH:mm:ss");

        DateTime dateNow= DateTime.Today;
        dateNow.ToString("YYYY-MM-DD");

        string query= String.Format("INSERT INTO entries(id,nif,active,date, entry_time, out_time) VALUES " +
            "(0,'{0}','{1}','{2}','{3}',null)", nif, active, dateNow, timeNow);

        MessageBox.Show(query);

        MySqlCommand com = new MySqlCommand(query, connection);

        ret= com.ExecuteNonQuery();

        return ret;
    }

我只需要在具有日期和时间格式(不是字符串)的条目表中插入实际数据和实际时间(当我调用该方法时),但我不知道该怎么做

感谢您的帮助!!

最佳答案

替换字符串连接的参数化查询应该是

 string query= @"INSERT INTO entries(nif,active,date, entry_time) 
                 VALUES (@nif, @active, @d, @e)";
 MySqlCommand com = new MySqlCommand(query, connection);
 com.Parameters.Add("@nif", MySqlDbType.VarChar).Value = nif;
 com.Parameters.Add("@active", MySqlDbType.Int32).Value = active;
 com.Parameters.Add("@d", MySqlDbType.Date).Value = dateNow;
 com.Parameters.Add("@e", MySqlDbType.Time).Value = timeNow;
 ret= com.ExecuteNonQuery();

另请注意,如果 id 是一个自动增量列,则您无需在查询中将其传递给应接收空值的列。

请注意查询文本现在如何更易于理解,以及如何使用数据库表中预期的数据类型指定所有参数。

关于c# - 如何通过 C# 在 Mysql 中插入日期/时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55839076/

相关文章:

c# - 如何使用 insert 语句将数百万不同 RDBMS 的数据插入 SQL Server 数据库?

c# - VS 2008 中的 "Unable to start debugging"消息

c# - Entity Framework 不生成 ApplicationUser 外键

c# - 如何使用LINQ实现Left Excluding JOIN?

php - PDO 事务不工作

mysql - 为什么 mysql 中的日期会出现此错误消息?

c# - 如何正确取消订阅事件

c# - 为什么单元格标题和单元格内容在数据网格中不对齐?

php - PDO bindValue 适用于其他输入,为什么这个不行?

php - 连接三个表的多个值