gpt4 book ai didi

java - 插入包含日期的查询格式

转载 作者:行者123 更新时间:2023-11-30 23:15:08 27 4
gpt4 key购买 nike

我有一个由字段组成的表格订单 oid odate ddate ShippingAddr Email

,其中 oid 是自动递增的,我正在使用以下查询-

"INSERT INTO order (Odate,Ddate, ShippingAddr, Email) 
VALUES ('" + o.getOdate() + "','" + o.getDdate() + "','" + o.getShippingAddr() + "','" + Email + "')";

但是它给出了一个Mysqlexception请帮忙

最佳答案

根本不要像这样构建您的 SQL。而是使用参数化 SQL,并设置各种参数值。

// You still need to escape the "order" table name as per Özkan's answer
String sql =
"INSERT INTO `order` (ODate, DDate, ShippingAddr, Email) VALUES (?, ?, ?, ?)";
try (PreparedStatement pst = conn.prepareStatement(sql))
{
pst.setDate(1, o.getOdate());
pst.setDate(2, o.getDdate());
pst.setString(3, o.getShippingAddr());
pst.setString(4, Email);
pst.executeUpdate();
}

这将:

  • 避免SQL injection attacks
  • 弄清楚问题出在 SQL 上,什么时候出在数据上(您问题中的 SQL 问题实际上与日期无关,但最终混淆了问题)
  • 将代码与数据分开
  • 避免日期等方面的转换问题

请注意,我对 ODateDDate 值使用了 setDate。我希望它们是您数据库中的“日期”类型(或类似的东西),并且 o.getODate() 返回一个 Date -或者可能是 Joda 时间类型,例如 LocalDate。如果您实际上只是对数据模型中的所有内容使用字符串,那是另一件需要解决的问题(紧急情况下,IMO)。

关于java - 插入包含日期的查询格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224086/

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