java.time.localate
objet question:
comment insérer et récupérer
java.time types (par exemple
localDate
répondre:
Méthode 1: pilote compatible avec jdbc 4.2
Pour les pilotes JDBC conformes à la spécification JDBC 4.2 ou ultérieure, vous pouvez directement utiliser les méthodes
setObject et
getObject pour gérer les objets
java.time
preparedStatement.setObject(1, myLocalDate); // LocalDate转换为SQL DATE
LocalDate localDate = myResultSet.getObject("my_date_column_", LocalDate.class); // 指定预期类以确保类型安全
Méthode 2: ancienne version des pilotes avant JDBC 4.2
Pour un pilote qui n'est pas compatible avec JDBC 4.2, vous devez convertir brièvement l'objet
java.time à l'objet équivalent
java.sql
java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate);
preparedStatement.setDate(1, mySqlDate);
java.sql.Date sqlDate = myResultSet.getDate("date_"); //尽可能简短地处理转换
LocalDate localDate = sqlDate.toLocalDate();
Exemple de pilote compatible avec jdbc 4.2:
import java.sql.*;
import java.time.LocalDate;
import java.time.ZoneId;
public class LocalDateExample {
public static void main(String[] args) throws SQLException {
String url = "jdbc:h2:mem:test_db"; // 更改为您的数据库URL
String user = "user";
String password = "password";
try (
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
) {
stmt.execute("CREATE TABLE IF NOT EXISTS employees (id INT PRIMARY KEY, name VARCHAR(255), birthday DATE)");
// 插入LocalDate值
LocalDate today = LocalDate.now(ZoneId.of("America/Montreal"));
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees (name, birthday) VALUES (?, ?)");
pstmt.setString(1, "John Doe");
pstmt.setObject(2, today); // 直接传递LocalDate
pstmt.executeUpdate();
// 检索LocalDate值
ResultSet rs = stmt.executeQuery("SELECT * FROM employees");
while (rs.next()) {
LocalDate birthday = rs.getObject("birthday", LocalDate.class); // 指定预期类
System.out.println("员工:" rs.getString("name") ",生日:" birthday);
}
rs.close();
pstmt.close();
stmt.close();
}
}
}
Exemple du pilote hérité:
import java.sql.*;
import java.time.LocalDate;
public class LocalDateExample {
public static void main(String[] args) throws SQLException {
String url = "jdbc:h2:mem:test_db"; // 更改为您的数据库URL
String user = "user";
String password = "password";
try (
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
) {
stmt.execute("CREATE TABLE IF NOT EXISTS employees (id INT PRIMARY KEY, name VARCHAR(255), birthday DATE)");
// 插入LocalDate值
LocalDate today = LocalDate.now();
java.sql.Date sqlDate = java.sql.Date.valueOf(today);
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees (name, birthday) VALUES (?, ?)");
pstmt.setString(1, "John Doe");
pstmt.setDate(2, sqlDate); // 将LocalDate转换为java.sql.Date
pstmt.executeUpdate();
// 检索LocalDate值
ResultSet rs = stmt.executeQuery("SELECT * FROM employees");
while (rs.next()) {
java.sql.Date sqlDate = rs.getDate("birthday");
LocalDate birthday = sqlDate.toLocalDate(); // 将java.sql.Date转换为LocalDate
System.out.println("员工:" rs.getString("name") ",生日:" birthday);
}
rs.close();
pstmt.close();
stmt.close();
}
}
}
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3