Dalam kod anda, anda cuba menetapkan nilai lajur DATE dalam pangkalan data menggunakan kaedah setDate(). Walau bagaimanapun, anda menghantar objek java.sql.Date yang telah dimulakan dengan nilai 0000-00-00, iaitu tarikh yang tidak sah.
Cara yang betul untuk menetapkan nilai lajur DATE menggunakan setDate() adalah untuk menghantar objek java.util.Date yang mengandungi nilai tarikh yang betul. Anda boleh mencipta objek java.util.Date menggunakan pembina java.util.Date() baharu atau dengan menggunakan salah satu daripada banyak kaedah kilang statik yang tersedia dalam kelas java.util.Calendar.
Sebagai contoh, kod berikut menunjukkan cara untuk menetapkan nilai lajur DATE menggunakan objek java.util.Date yang mengandungi tarikh semasa:
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(); } }
Anda juga boleh menggunakan kaedah setString() untuk menetapkan nilai lajur DATE, tetapi anda mesti menukar objek java.util.Date kepada rentetan menggunakan kaedah toString() dahulu. Sebagai contoh, kod berikut menunjukkan cara untuk menetapkan nilai lajur DATE menggunakan kaedah setString():
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(); } }
Atas ialah kandungan terperinci Bagaimana Menggunakan `setDate` dengan betul dalam Java `PreparedStatement` untuk Mengelakkan Ralat Tarikh Tidak Sah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!