如何使用 java 将日期写入(更新)到 MySQL 数据库?

How to write (update) date to MySQL database with java?

我有一个 MySQL 数据库,我通过 java 程序连接到该数据库。在 'locations' table 中,我有一个类型为 'Date' 的 'ExpDate' 列。我无法写回日期,因为我猜存在格式冲突。代码:

resultSet = statement.executeQuery("SELECT * FROM locations WHERE LocID = '" + oldLocation + "'");  
resultSet.first();  // Position to row. 
Date oldLocExpDate = resultSet.getDate("ExpDate");

statement.executeUpdate("UPDATE locations SET 'ExpDate' = '" + oldLocExpDate + "' WHERE LocID = '" + newLocation + "'");

我收到异常消息,说 SQL 语法有问题。我也尝试过将日期输入作为字符串,但没有成功。

如何重写最后一行代码,以便将日期写入数据库。

使用java.sql.date将日期转换为sql格式。

java.sql.Date oldLocExpDate = new java.sql.Date(resultSet.getDate("ExpDate").getTime());

代替Date oldLocExpDate = resultSet.getDate("ExpDate");

HTH!

以这种方式使用日期将有效地调用 Date 对象上的 toString()。这将创建一个表示日期的字符串,但它可能不是数据库期望的格式,这将特定于数据库会话等。

我看到两个解决方案:

  • 使用现有代码,并使用 DateFormat 之类的东西格式化字符串,以将 java.sql.Date 转换为所需的字符串格式。您还必须找出适合您的特定配置的内容。
  • 转向使用准备好的语句。准备好的语句有一个 API 接受日期作为查询的参数。通过使用此 API,特定于数据库的 JDBC 库应将日期转换为适合更新的格式。

附带说明一下,对于基本编程,使用语句 API 是可以的,但一般来说,PreparedStatement API 更有用,有助于防止诸如 SQL 注入以及对性能的帮助。