Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将日期从mysql检索到JDBC中_Java_Mysql_Jdbc - Fatal编程技术网

Java 无法将日期从mysql检索到JDBC中

Java 无法将日期从mysql检索到JDBC中,java,mysql,jdbc,Java,Mysql,Jdbc,目前的问题是,我无法从mysql数据库中检索日期对象,到目前为止,无论我尝试什么,我都会得到 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 或 有没有人有办法解决这个问题 我已经试过了,但仍然出现了两个相同的错误,这两个错误都是由日期引起的。如果要从数据库中检索行,请格式化select语句中的日期 SELECT if(colDate = '0000-00-00', curdate(), colDate

目前的问题是,我无法从mysql数据库中检索日期对象,到目前为止,无论我尝试什么,我都会得到

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

有没有人有办法解决这个问题


我已经试过了,但仍然出现了两个相同的错误,这两个错误都是由日期引起的。如果要从数据库中检索行,请格式化
select
语句中的日期

SELECT if(colDate = '0000-00-00', curdate(), colDate), ....

只需将
CURDATE()
替换为所需的默认日期。出现异常的原因是
0000-00-00
不是有效日期。

如果要从数据库检索行,请格式化
select
语句中的日期

SELECT if(colDate = '0000-00-00', curdate(), colDate), ....

只需将
CURDATE()
替换为所需的默认日期。出现异常的原因是
0000-00-00
不是有效日期。

'0000-00-00'是无效日期。它不应该存在于您的数据中

因此,您需要:

  • 清理数据并关闭MySQL配置中的允许无效日期(请参阅)

  • 编写java代码捕获日期异常并处理错误数据

  • 按照John Woo的建议,编写SQL以用默认日期替换无效日期


  • 3的问题是,还有其他无效日期(例如“2012-02-31”)也可能引发异常。祝你好运。

    '0000-00-00'是无效日期。它不应该存在于您的数据中

    因此,您需要:

  • 清理数据并关闭MySQL配置中的允许无效日期(请参阅)

  • 编写java代码捕获日期异常并处理错误数据

  • 按照John Woo的建议,编写SQL以用默认日期替换无效日期


  • 3的问题是,还有其他无效日期(例如“2012-02-31”)也可能引发异常。祝你好运。

    除了其他人的回答(包括存储无效日期不是一个好主意的非常好的建议)之外,你还可以指示JDBC驱动程序以不同的方式处理这些无效日期:

    发件人:

    默认情况下,当遇到这些值时,Connector/J 3.1会引发异常,因为根据JDBC和SQL标准,这是最正确的行为。可以使用zeroDateTimeBehavior配置属性修改此行为。允许值为:

    -异常(默认值),它抛出一个SQLState为S1009的SQLException。
    -convertToNull,返回NULL而不是日期。
    -舍入,将日期舍入到最接近的值0001-01-01

    我建议使用
    convertToNull


    有关如何指定配置属性的说明,请参阅。

    除了其他人的回答(包括存储无效日期不是一个好主意的非常好的建议)之外,您还可以指示JDBC驱动程序以不同的方式处理这些无效日期:

    发件人:

    默认情况下,当遇到这些值时,Connector/J 3.1会引发异常,因为根据JDBC和SQL标准,这是最正确的行为。可以使用zeroDateTimeBehavior配置属性修改此行为。允许值为:

    -异常(默认值),它抛出一个SQLState为S1009的SQLException。
    -convertToNull,返回NULL而不是日期。
    -舍入,将日期舍入到最接近的值0001-01-01

    我建议使用
    convertToNull


    有关如何指定配置属性的说明,请参阅。

    数据不应无效,尽管我使用的测试数据强制使用默认日期。数据不应无效,尽管我使用的测试数据强制使用默认日期