插入查询服务器时间戳
本文关键字:时间戳 服务器 查询服务 查询 插入 | 更新日期: 2023-09-27 17:52:33
我有一个c#程序,我想运行一个插入记录的MySQL查询。在这条记录中,我有一个时间戳字段,必须是服务器时间戳,而不是客户端时间戳。所以,我这样写:
start_session = new MySqlDataAdapter("INSERT INTO CUBE_WORKTIME(ID_WORKTIME,
ID_RISORSA_FK,DATA,ORA_INIZIO_EVENTO, ORA_FINE_EVENTO,
ID_CDC_FK, CAUSALE, LAST_EVENT)
VALUES ('', '"+ idrisorsa_global + "', DATE(NOW()),NOW(),
NULL, '"+ IDCDC +"', 'Login', 'Y')", connection);
DataTable start_session_dataset = new DataTable();
start_session.Fill(start_session_dataset);
这个查询运行良好,ID_RISORSA_FK
和IDCDC
字段是正确的。但是日期和日期时间是0000-00-00和0000-00-00 00:00:00。我也试着添加引号,但没有效果。
任何想法?
首先要更改的是使用MySqlDataAdapter来插入一条记录。虽然这可以工作,但它不是用于此工作的正确类。一个简单的MySqlCommand是正确的对象,并且需要更少的基础设施
第二个要更改的是构建sql查询的方式。不要将字符串连接在一起形成sql命令,而是使用参数。这避免了Sql注入和解析问题。
所以你的代码可以重写为string cmdText = @"INSERT INTO CUBE_WORKTIME
(ID_RISORSA_FK,DATA,ORA_INIZIO_EVENTO, ORA_FINE_EVENTO,ID_CDC_FK,
CAUSALE, LAST_EVENT) VALUES (@risorsaID, CURDATE(), CURTIME(),
NULL, @cdcID, 'Login', 'Y')";
MySqlCommand cmd = new MySqlCommand(cmdText, connection);
cmd.Parameters.Add("@risorsaID", MySqlDbType.Int32).Value = idrisorsa_global;
cmd.Parameters.Add("@cdcID", MySqlDbType.Int32).Value = IDCDC;
int rowsInserted = cmd.ExecuteNonQuery();