Rumah >Java >javaTutorial >Bagaimana untuk Mengendalikan Objek java.time dengan JDBC dalam Pangkalan Data H2?

Bagaimana untuk Mengendalikan Objek java.time dengan JDBC dalam Pangkalan Data H2?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 19:02:11240semak imbas

How to Handle java.time Objects with JDBC in H2 Database?

Pertukaran Data JDBC dengan Objek java.time

Soalan: Bagaimanakah saya boleh memasukkan jenis java.time dalam saya Pangkalan data SQL menggunakan JDBC, khususnya Pangkalan Data H2 Enjin?

Jawapan: Terdapat dua kaedah untuk mengatur pertukaran data dengan objek java.time melalui JDBC:

JDBC 4.2 Compliant Driver

  • Dengan pemacu JDBC yang serasi dengan JDBC 4.2 atau lebih tinggi, anda boleh memanipulasi objek java.time secara langsung.
  • Jawatankuasa JDBC memperbadankan kaedah setObject/getObject untuk mengendalikan ini, menghapuskan keperluan untuk kaedah seperti setLocalDate/getLocalDate.
  • Untuk memasukkan data, gunakan kaedah setObject dengan objek java.time anda sebagai hujah.
  • Untuk mendapatkan data, gunakan kaedah getObject dengan jenis data yang dijangkakan sebagai hujah tambahan, memastikan keselamatan jenis.

Pemacu Tidak Mematuhi JDBC 4.2

  • Untuk JDBC pemacu belum lagi serasi dengan JDBC 4.2, menukar sementara antara java.time dan java.sql jenis.
  • Gunakan java.sql.Date.valueOf untuk menukar LocalDate kepada java.sql.Date untuk sisipan.
  • Untuk mendapatkan semula, tukarkan java.sql.Date yang diambil kepada LocalDate menggunakan toLocalDatenya kaedah.

Contoh Kod Menggunakan Pangkalan Data H2

JDBC 4.2 Mematuhi

LocalDate today = LocalDate.now(ZoneId.of("America/Montreal"));

// Insert row
preparedStatement.setObject(1, today.minusDays(1));
preparedStatement.executeUpdate();
preparedStatement.setObject(1, today);
preparedStatement.executeUpdate();
preparedStatement.setObject(1, today.plusDays(1));
preparedStatement.executeUpdate();

// Retrieve data
LocalDate localDate = myResultSet.getObject("date_", LocalDate.class);

Tidak -JDBC 4.2 Mematuhi

// Insert row
preparedStatement.setDate(1, java.sql.Date.valueOf(today));
preparedStatement.executeUpdate();

// Retrieve data
java.sql.Date sqlDate = myResultSet.getDate("date_");
LocalDate localDate = sqlDate.toLocalDate();

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Objek java.time dengan JDBC dalam Pangkalan Data H2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn