gpt4 book ai didi

c# - MySQL C# 插入查询服务器时间戳

转载 作者:行者123 更新时间:2023-11-29 11:26:46 25 4
gpt4 key购买 nike

我有一个 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 注入(inject)和解析问题。

所以你的代码可以重写为

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();

关于c# - MySQL C# 插入查询服务器时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com