微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

何时使用JDBC在Connections,语句和ResultSet上调用getWarnings?

如何解决何时使用JDBC在Connections,语句和ResultSet上调用getWarnings?

| 在JDBC中,“ 0”,“ 1”和“ 2”类型均具有指定的“ 3”方法,以产生与该类型的对象关联的第一个警告。如果第二个及以后的警告存在,则链接到第一个警告(如果甚至存在,则在没有警告的情况下会产生“ 4”)。 规范说,与某些类型的对象相关联的警告会在某些操作后清除。例如,当读取新的每一行时,将清除“ 2”上的警告。
sqlWarning
类型是
sqlException
的子类型。那么是否会通过异常指示警告的存在?如果该异常的运行时类型为“ 6”,则该异常将被链接到关联的对象? 我想知道的是,这可能是特定于驱动程序的,我如何知道何时应致电
getWarnings()
并期望返回非
null
?换句话说,在JDBC对象上是否存在警告,并且仅在该对象引发异常后才可以使用
getWarnings()
? (那是警告吗?) 如果我的目标是观察每个警告,我是否应该在每次JDBC操作“只是为了确定”之后致电“ 3”来查找警告?     

解决方法

           另一方面,您必须明确   检查是否有任何SQL警告,因为   它们不会通过   标准异常处理   机制。为此,请致电   适当的getWarnings方法   相关的JDBC对象。 [参考] 坦白说,我从来没有发现自己要检查警告。可能是我从来没有做过认真的事情。     ,        “ 6”对象是“ 7”的子类,用于处理数据库访问警告。 警告不会像异常一样停止应用程序的执行。它们只是警告用户某些事情没有按计划发生。 可以在“ 0”对象,“ 1”对象(包括“ 17”和“ 18”对象)或“ 2”对象上报告警告。 这些类中的每一个都有一个
getWarnings
方法,您必须调用该方法才能查看在调用对象上报告的第一个警告:
SQLWarning warning = stmt.getWarnings();
if (warning != null)
{
    System.out.println(\\\"n---Warning---n\\\");
    while (warning != null)
    {
        System.out.println(\\\"Message: \\\" + warning.getMessage());
        System.out.println(\\\"SQLState: \\\" + warning.getSQLState());
        System.out.print(\\\"Vendor error code: \\\");
        System.out.println(warning.getErrorCode());
        System.out.println(\\\"\\\");
        warning = warning.getNextWarning();
    }
}
    ,        是的,如果您确实想遵守所有警告,则需要明确获取警告。但是,为什么要这样做呢? 另外,Spring \的JdbcTemplate还提供了记录警告或在出现警告时引发SQLWarningException的选项。默认行为是记录警告,因为警告是警告。希望这也足以满足您的目的。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。