Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit „0000-00-00 00:00:00' DATETIME-Werten in JDBC um?
Verarbeitung von „0000-00-00 00:00:00“ DATETIME-Werten in JDBC
Beim Abrufen von DATETIME-Werten aus einer MySQL-Datenbank mit Bei JDBC kann es zu einer Ausnahme kommen, wenn der Wert auf den Quasi-Null-Wert von gesetzt ist „0000-00-00 00:00:00“. Dieses Problem tritt auf, wenn versucht wird, den Wert als Zeichenfolge mithilfe von resultset.getString("add_date") abzurufen, obwohl beabsichtigt ist, eine Rohzeichenfolge zu erhalten.
Alternative Lösung
Eine Problemumgehung für dieses Problem ist die Verwendung der folgenden SQL-Abfrage:
SELECT CAST(add_date AS CHAR) as add_date
Diese Abfrage wandelt den DATETIME-Wert in a um CHAR, um sicherzustellen, dass es als Zeichenfolge abgerufen wird. Aufgrund des zusätzlichen Verarbeitungsaufwands gilt sie jedoch als weniger optimale Lösung.
JDBC-URL-Konfiguration
Ein alternativer Ansatz besteht darin, die JDBC-URL direkt in Ihrer Datenquelle zu konfigurieren Konfiguration:
jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
Indem Sie die Eigenschaft „zeroDateTimeBehavior“ auf „convertToNull“ festlegen, weisen Sie den JDBC-Treiber an, die zu konvertieren DATETIME-Werte, die nur Nullen sind, werden auf NULL gesetzt, anstatt eine Ausnahme auszulösen.
Quelle und zusätzliche Optionen
Das offizielle MySQL-Handbuch enthält weitere Informationen zum Umgang mit DATETIME, die nur Nullen sind Werte in Connector/J:
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior
Gemäß Laut Handbuch konvertierten Connector/J-Versionen 3.0.x DATETIME-Werte, die nur Nullen sind, standardmäßig in NULL. In Version 3.1 wurde das Standardverhalten jedoch auf das Auslösen einer Ausnahme geändert. Mit der Eigenschaft „zeroDateTimeBehavior“ können Sie dieses Verhalten anpassen, indem Sie eine der folgenden Optionen angeben:
Das obige ist der detaillierte Inhalt vonWie gehe ich mit „0000-00-00 00:00:00' DATETIME-Werten in JDBC um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!