将C#Datetime转换为MySql Datetime格式
我一直在想如何将c#中的当前datetime添加到mysql列中,该属性/列也是“datetime”格式。我正在写这段代码将C#Datetime转换为MySql Datetime格式,c#,mysql,datetime,C#,Mysql,Datetime,我一直在想如何将c#中的当前datetime添加到mysql列中,该属性/列也是“datetime”格式。我正在写这段代码 if (comboBox1.Text == "Cash On Delivery") { MessageBox.Show("Your order has been placed.","",MessageBoxButtons.OK); string timeString = DateTime.Now.ToStr
if (comboBox1.Text == "Cash On Delivery")
{
MessageBox.Show("Your order has been placed.","",MessageBoxButtons.OK);
string timeString = DateTime.Now.ToString("YYYY-MM-DD HH:MM:SS");
string constring = "datasource=localhost;port=3306;username=root;password=root";
string query = "insert into artgallery.payment_method where payment_method ='" +comboBox1.Text+ "' AND payment_date='" +formatForMySql+ "' AND payment_amount = '" +variables.total_amount+ "' ";
//rest of the code
}
我发现了一些语法错误,与我试图在“payment\u date”列中插入的时间字符串有关。正确的答案是停止从这样开始构建SQL。使用参数化SQL,然后指定
DateTime
值作为参数值-代码中根本不需要字符串表示
现在还不清楚您使用的是哪个驱动程序(MySQL有两个驱动程序,IIRC),但是您应该查看您使用的任何命令类型的参数
属性
使用参数化SQL非常重要,这不仅是为了避免这样的转换问题,也是为了防止。在我看来,它还使代码更易于阅读。这样说吧
INSERT INTO table_name( date_column) VALUES (STR_TO_DATE('2014-12-31 00:00:00','%Y-%m-%d %H:%i:%S')
另外,你把M(月的平均值)放在两个月里,分钟。。。
请在此处再次检查您的格式
顺便说一句,没有
YYYY
、DD
和SS
的可能重复项。自定义说明符区分大小写。而mm
是几分钟,而mm
是几个月。我还没有研究过参数化SQL。你能告诉我这种转换可能会出现什么错误吗?@MirzaTaimoorBaig:你已经发现,你需要确保执行正确的转换,并且在代码中的任何地方都要小心执行。为什么要继续使用这种对字符串参数不安全的方法,而不是找出如何使用公认的最佳实践在SQL查询中提供值?我完全同意这个答案,以防止注入攻击,由于提问者已经将其原始数据从用户输入到sql语句中。@ToonSuperLove:如果所有的值都是DateTime
或数字值,则不太可能进行sql注入攻击(虽然是-但在任何地方使用参数化sql都是值得的,依我看)。