Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Nilai '0000-00-00 00:00:00' DATETIME dalam JDBC?

Bagaimana Mengendalikan Nilai '0000-00-00 00:00:00' DATETIME dalam JDBC?

Linda Hamilton
Linda Hamiltonasal
2025-01-03 15:46:39936semak imbas

How to Handle

Mengendalikan "0000-00-00 00:00:00" Nilai DATETIME dalam JDBC

Apabila mendapatkan semula nilai DATETIME daripada pangkalan data MySQL menggunakan JDBC, anda mungkin menghadapi pengecualian jika nilai ditetapkan kepada nilai separa nol bagi "0000-00-00 00:00:00". Isu ini timbul apabila cuba mendapatkan semula nilai sebagai rentetan menggunakan resultset.getString("add_date"), walaupun niatnya adalah untuk mendapatkan rentetan mentah.

Penyelesaian Alternatif

Penyelesaian untuk isu ini ialah menggunakan pertanyaan SQL berikut:

SELECT CAST(add_date AS CHAR) as add_date

Pertanyaan ini menghantar Nilai DATETIME kepada CHAR, memastikan ia diambil semula sebagai rentetan. Walau bagaimanapun, ia dianggap sebagai penyelesaian yang kurang optimum kerana keperluan pemprosesan tambahannya.

Konfigurasi URL JDBC

Pendekatan alternatif ialah mengkonfigurasi URL JDBC terus dalam sumber data anda konfigurasi:

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull

Dengan menetapkan sifat zeroDateTimeBehavior kepada convertToNull, anda mengarahkan Pemacu JDBC untuk menukar nilai DATETIME semua-sifar kepada NULL dan bukannya membuang pengecualian.

Sumber dan Pilihan Tambahan

Manual MySQL rasmi menyediakan maklumat lanjut tentang cara untuk mengendalikan semua-sifar nilai DATETIME dalam Penyambung/J:

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior

Mengikut kepada manual, Connector/J versi 3.0.x menukar semua-sifar nilai DATETIME kepada NULL secara lalai. Walau bagaimanapun, dalam versi 3.1, tingkah laku lalai telah ditukar kepada membuang pengecualian. Sifat zeroDateTimeBehavior membolehkan anda menyesuaikan tingkah laku ini dengan menyatakan salah satu daripada pilihan berikut:

  • pengecualian (lalai): Lemparkan pengecualian dengan SQLState S1009.
  • convertToNull: Tukar nilai kepada NULL.
  • pusingan: Bundarkan tarikh kepada nilai terdekat, iaitu 0001-01-01.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai '0000-00-00 00:00:00' DATETIME dalam JDBC?. 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