我需要在 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/