首页 >Java >java教程 >如何在 Java `PreparedStatement` 中正确使用 `setDate` 以避免无效日期错误?

如何在 Java `PreparedStatement` 中正确使用 `setDate` 以避免无效日期错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-06 05:51:10831浏览

How to Correctly Use `setDate` in a Java `PreparedStatement` to Avoid Invalid Date Errors?

在PreparedStatement中使用setDate

在您的代码中,您尝试使用以下方法设置数据库中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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn