在您的代码中,您尝试使用以下方法设置数据库中DATE列的值: setDate() 方法。但是,您传入的 java.sql.Date 对象已使用值 0000-00-00 进行初始化,这是一个无效日期。
使用以下命令设置 DATE 列的值的正确方法setDate() 是传入一个包含正确日期值的 java.util.Date 对象。您可以使用新的 java.util.Date() 构造函数或使用 java.util.Calendar 类中可用的众多静态工厂方法之一来创建 java.util.Date 对象。
例如,以下代码显示如何使用包含当前日期的 java.util.Date 对象设置 DATE 列的值:
import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Calendar; public class SetDateExample { public static void main(String[] args) throws SQLException { // Create a connection to the database Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "user", "password"); // Create a prepared statement to insert a new row into the table String sql = "INSERT INTO my_table (name, date_column) VALUES (?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); // Set the name and date_column values for the new row pstmt.setString(1, "John Doe"); pstmt.setDate(2, new Date(Calendar.getInstance().getTime().getTime())); // Execute the prepared statement pstmt.executeUpdate(); // Close the prepared statement and connection pstmt.close(); conn.close(); } }
您还可以使用 setString() 方法要设置 DATE 列的值,但必须首先使用 toString() 方法将 java.util.Date 对象转换为字符串。例如,以下代码显示如何使用 setString() 方法设置 DATE 列的值:
import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Calendar; public class SetStringExample { public static void main(String[] args) throws SQLException { // Create a connection to the database Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "user", "password"); // Create a prepared statement to insert a new row into the table String sql = "INSERT INTO my_table (name, date_column) VALUES (?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); // Set the name and date_column values for the new row pstmt.setString(1, "John Doe"); pstmt.setString(2, new Date(Calendar.getInstance().getTime().getTime()).toString()); // Execute the prepared statement pstmt.executeUpdate(); // Close the prepared statement and connection pstmt.close(); conn.close(); } }
以上是如何在 Java `PreparedStatement` 中正确使用 `setDate` 以避免无效日期错误?的详细内容。更多信息请关注PHP中文网其他相关文章!