我有以下代码:
private void saveDT()
{
MySqlConnection myConn = new MySqlConnection(Common.myConnection);
myConn.Open();
string sLastLogin = DateTime.UtcNow.ToString("dd.MM.yyyy HH:mm:ss");
MySqlCommand mySqlCmd = new MySqlCommand("UPDATE ha_system.tblaccounts SET lastlogin='" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss") + "' WHERE name='" + Common.ActiveUser + "'", myConn);
try
{
mySqlCmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("Fehler: " + ex.Message);
}
finally
{
}
}
但是时间和日期仅在数据库列“lastlogin”中第二次登录后保存。 为什么?我该怎么做才能解决这个问题?
答案 0 :(得分:1)
除了关于避免SQL注入的其他注释之外,您不需要从.NET获取DateTime值到MySQL服务器,您可以使用内置函数并进行如下查询:
"UPDATE ha_system.tblaccounts SET lastlogin=NOW() WHERE ..."
答案 1 :(得分:1)
如果以有效格式编写日期时间文字,它应该可以正常工作。
dd.mm.yyyy hh:mm:ss不是MySQL日期时间文字的有效格式。无论如何,这也是模棱两可的。试试yyyy-mm-dd hh:mm:ss,在你正在使用的函数的正确位置使用H和M的适当大小写。
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-literals.html
而且,严肃地说,不要通过连接字符串来构建查询。