c# - 如何将mysql的日期时间转换为asp.net的日期时间

标签 c# mysql asp.net

我正在从 mysql 中名为 lot 的表中的字符串中获取日期,并希望将相同的日期时间值插入到 mysql 中名为 selllot 的另一个表中。怎么做?请帮忙。

谢谢

String q6 = "select date from lot LIMIT " + m + "," + n + "";
MySqlCommand c6 = new MySqlCommand(q6, cn);
String d = (String)(c6.ExecuteScalar());
String q7 = "insert into sold values(" + lotno + "," + c + "," + rcno + ",'" + d.ToString("yyyy-mm-dd") + "')";
MySqlCommand c7 = new MySqlCommand(q7, cn);
c7.ExecuteScalar();

最佳答案

首先,让我们修复此问题以使用参数:

//I'm less worried about this query, as m and are likely integers. 
// I still don't approve of the string concatenation, but I'll leave it alone for now
String q6 = "select date from lot LIMIT " + m + "," + n + "";
MySqlCommand c6 = new MySqlCommand(q6, cn);
DateTime d = (DateTime)c6.ExecuteScalar(); //This should work just fine. 


//but parameters are VERY IMPORTANT for this query
String q7 = "insert into sold values( @LotNo, @c, @rcno, @date );";
MySqlCommand c7 = new MySqlCommand(q7, cn);
//I'm guessing at column types. Use actual DB column types and lengths here
c7.Parameters.Add("@LotNo", MySqlDbType.VarChar, 6).Value = lotno;
c7.Parameters.Add("@c", MySqlDbType.VarChar, 20).Value = c;
c7.Parameters.Add("@rcno", MySqlDbType.VarChar, 6).Value = rcno;
c7.Parameters.Add("@date", MySQlDbType.Date).Value = d;

c7.ExecuteNonQuery();

此更改将修复代码中非常严重的安全问题,并且作为一个很好的副作用,还可以避免考虑日期格式,从而同时回答您的问题。

但是,当我在这里的时候,让我们对此做出另一项重大改进。让我们保存到数据库的整个往返,并将两个查询合并为一个:

String q6 = "insert into sold select @LotNo, @c, @rcno, date from lot LIMIT @m , @n;";
MySqlCommand c6 = new MySqlCommand(q6, cn);
//I'm guessing at column types. Use actual DB column types and lengths here
c6.Parameters.Add("@LotNo", MySqlDbType.VarChar, 6).Value = lotno;
c6.Parameters.Add("@c", MySqlDbType.VarChar, 20).Value = c;
c6.Parameters.Add("@rcno", MySqlDbType.VarChar, 6).Value = rcno;
c6.Parameters.Add("@m", MySqlDbType.Int).Value = m;
c6.Parameters.Add("@n", MySqlDbType.Int).Value = n;

c6.ExecuteNonQuery();

如果第一次尝试没有解决您的日期转换问题,那么现在日期根本不需要传输到 ASP.Net,而且作为奖励,这将快得多 .

最后,我担心您的 q 和 c 变量已经达到#7。这对我来说是一个主要的代码味道。始终尝试减少数据库的往返次数。最有可能的是,此方法中的所有内容都可以编写为单个 SQL 语句,或者至少简化为两步过程。

关于c# - 如何将mysql的日期时间转换为asp.net的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26999445/

相关文章:

c# - 接口(interface)作为函数的参数

c# - PRISM + MEF -- 导入 & ImportMany

php - Codeigniter - 在将其发送到 View 之前处理从数据库检索的值

mysql - 无法通过一个查询更新多个记录(CASE/WHEN))

ASP.NET 使用复选框隐藏 Gridview 行

c# - C# .Net : The underlying connection was closed: An unexpected error occurred on a send 的 TLS 1.2 错误

c# - 如何将 XMLDocument 类型转换为字符串以便在标签中显示结果

c# - 特殊(或外国)字符

c# - 外键冲突

mysql - MySQL 中 >= 100 位的位图