插入查询服务器时间戳

本文关键字:时间戳 服务器 查询服务 查询 插入 | 更新日期: 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_FKIDCDC字段是正确的。但是日期和日期时间是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();