何时使用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的选项。默认行为是记录警告,因为警告是警告。希望这也足以满足您的目的。     

要回复问题请先登录注册