在您的程式碼中,您嘗試使用下列方法設定資料庫中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中文網其他相關文章!