Gre*_*tes 7 java sql database warnings jdbc
在JDBC中Connection,每个Statement和ResultSet每个类型都有一个getWarnings()方法,用于生成与该类型对象关联的第一个警告.第二个及后续警告(如果存在)将链接到第一个警告(如果它甚至存在,null则在没有警告时生成).
规范说明在某些操作后,与这些类型的对象相关的警告会被清除.例如,在ResultSet读取每个新行时清除a上的警告.
的SQLWarning类型是其亚型SQLException.那么,例外是否会出现警告?如果异常的运行时类型是,该异常将链接到关联的对象SQLWarning?
我想知道的是这个,它可能是特定于驱动程序的,我怎么知道何时应该打电话getWarnings()并期待不null答复?换句话说,JDBC对象上是否存在警告,getWarnings()只有在该对象抛出异常后才可用?(那个例外就是警告?)
getWarnings()如果我的目标是观察每一个警告,我是否应该在每次JDBC操作之后调用以查找警告"只是为了确定"?
SQLWarning对象是SQLException处理数据库访问警告的子类.
警告不会像例外那样停止执行应用程序; 他们只是提醒用户某些事情没有按计划发生.
警告可以在上报告Connection对象,Statement对象(包括PreparedStatement与CallableStatement对象),或一个ResultSet对象.
这些类中的每一个都有一个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();
}
}
Run Code Online (Sandbox Code Playgroud)