Heim >Java >javaLernprogramm >Wie verwende ich „setDate' in einem Java „PreparedStatement' korrekt, um ungültige Datumsfehler zu vermeiden?

Wie verwende ich „setDate' in einem Java „PreparedStatement' korrekt, um ungültige Datumsfehler zu vermeiden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-06 05:51:10825Durchsuche

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

Verwenden von setDate in PreparedStatement

In Ihrem Code versuchen Sie, den Wert einer DATE-Spalte in der Datenbank mithilfe von festzulegen setDate()-Methode. Sie übergeben jedoch ein java.sql.Date-Objekt, das mit dem Wert 0000-00-00 initialisiert wurde, was ein ungültiges Datum ist.

Die richtige Methode zum Festlegen des Werts einer DATE-Spalte mit setDate() soll ein java.util.Date-Objekt übergeben, das den korrekten Datumswert enthält. Sie können ein java.util.Date-Objekt mit dem neuen Konstruktor java.util.Date() oder mit einer der vielen statischen Factory-Methoden erstellen, die in der Klasse java.util.Calendar verfügbar sind.

Zum Beispiel: Der folgende Code zeigt, wie man den Wert einer DATE-Spalte mithilfe eines java.util.Date-Objekts festlegt, das das aktuelle Datum enthält:

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();
    }
}

Sie können auch setString() verwenden Methode, um den Wert einer DATE-Spalte festzulegen, aber Sie müssen zuerst das java.util.Date-Objekt mit der toString()-Methode in einen String konvertieren. Der folgende Code zeigt beispielsweise, wie der Wert einer DATE-Spalte mithilfe der setString()-Methode festgelegt wird:

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();
    }
}

Das obige ist der detaillierte Inhalt vonWie verwende ich „setDate' in einem Java „PreparedStatement' korrekt, um ungültige Datumsfehler zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn