c# - MySQL根据日期时间插入

标签 c# mysql database

这是我第一次发帖,所以如果我在不知不觉中违反了任何关于发帖礼仪的规定,我深表歉意。

我正在使用 C# 和 Redmine API 迁移数据库条目。当且仅当时间条目比数据库中现有的更新时,我才需要提取 XML 中的时间条目并插入 MySQL。

现在我正在通过简单地将原始 MySQL 数据库条目重新路由回 MySQL 并放入一个新表来对此进行原型(prototype)设计。以后会用类似SAP软件的ERP软件。

我不确定程序逻辑是否需要主要在 C# 代码中,或者在 MySQL 语句中。这是我卡住的地方:

foreach (TimeEntry t in timeEntries.list)
{

   comm.CommandText =
     "INSERT INTO time_entries(time_entry_id,project_id,issue_id,user_id,activity_id,hours,comments,"
     + "spent_on,created_on,updated_on,customer_number)"
     + "VALUES(?time_entry_id,?project_id,?issue_id,?user_id,?activity_id,?hours,?comments,?spent_on,"
     + "?created_on,?updated_on,?customer_number)";
     comm.Parameters.AddWithValue("?time_entry_id", t.id);
     comm.Parameters.AddWithValue("?project_id", t.project.Id);
     comm.Parameters.AddWithValue("?issue_id", t.issue.id);
     comm.Parameters.AddWithValue("?user_id", t.user.id);
     comm.Parameters.AddWithValue("?activity_id", t.activity.id);
     comm.Parameters.AddWithValue("?hours", t.hours);
     comm.Parameters.AddWithValue("?comments", t.comments);
     comm.Parameters.AddWithValue("?spent_on", t.spent_on);
     comm.Parameters.AddWithValue("?created_on", t.created_on);
     comm.Parameters.AddWithValue("?updated_on", t.updated_on);
     comm.Parameters.AddWithValue("?customer_number", t.custom_fields.list[0].value);

     comm.ExecuteNonQuery();
     comm.Parameters.Clear();  
     continue; 
}

当然,一切插入都很好,程序的后续运行只会插入重复的记录。完成后,我们的想法是它将作为每日 cron 作业运行,仅使用新的时间条目更新 MySQL。

正如我提到的,稍后我会将 XML 数据直接发送到类似于 SAP 软件的 ERP 程序,但现在我想确保 MySQL 到 MySQL 原型(prototype)首先工作。

我是一个相对较新的程序员,也是第一次发帖,所以如果我的代码逻辑有缺陷或者我的问题不够具体,请告诉我。提前致谢。

最佳答案

实际上,我只是想出了一个可行的解决方案。不确定这是否是最好的方法,但它有效,所以我很高兴。

我所做的只是将 updated_on 更改为 MySQL 中的主键,然后处理重复条目抛出的异常:

try
                {
                    comm.ExecuteNonQuery();

                }
                catch(MySql.Data.MySqlClient.MySqlException mySqlEx)
                {
                    Console.WriteLine("Duplicate entry found");
                }  

我想发布代码,以防它帮助其他人搜索同一问题的答案。就我而言,这个问题现在已经解决了。

关于c# - MySQL根据日期时间插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33828090/

相关文章:

c# - 如何检测HDMI线是否插入PCMCIA卡/无信号?

c# - 在代码后面更改图像源 - Wpf

mysql - 如何获取数据库所有表的非索引列列表?

java - 如何在 Spring boot 1.5.2 中终止 Hibernates 数据库连接?

database - 使用 log4j 登录到数据库

c# - 在 DataGridView 中拖放多列

php - 我无法使用此代码获取数据

mysql - 在连接表上选择多个位置

SQL 服务器 : Easiest way to copy users from dev -> prod

c# - 让代码运行 X 秒,然后停止