科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java SE 6中JDBC 4.0的增强特性3

Java SE 6中JDBC 4.0的增强特性3

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java SE 6包含了对Java数据库互连(JDBC)API的一些增强特性。这些增强特性的版本将定为JDBC version 4.0。JDBC新特性的目的是提供更简单的设计和更好的开发体验。

来源:IT专家网 2008年6月4日

关键字: 特性 JDBC 4.0 Java SE 6 java

  • 评论
  • 分享微博
  • 分享邮件
Update标注

  Update标注用于修饰Query接口方法以更新数据库表中的一条或多条记录。Update标注必须包含一个sql标注类型元素。这里是一个Update标注的例子:

interface LoanAppDetailsQuery extends BaseQuery {
        @Update(sql="update LoanDetails set LoanStatus = ?1
                where loanId = ?2")
        boolean updateLoanStatus(String loanStatus, int loanId);
}

  SQL异常处理的增强特性

  异常处理是Java编程的一个重要部分,特别是对后台关系数据库进行连接或查询时。SQLException是我们用以指出与数据库相关错误的类。JDBC 4.0在SQLException处理中有不少增强。为了在处理SQLException时获得更好的开发体验,JDBC 4.0版作了如下增强:

  •   1. 新的SQLException子类
  •   2. 对因果关系的支持
  •   3. 对改进的for-each循环的支持

  新的SQLException类

  SQLException的新子类提供了一种方法,使Java开发人员能写出更方便改动的错误处理代码。JDBC 4.0介绍了两个新的SQLException型别:

  •   • SQL non-transient exception
  •   • SQL transient exception
    Non-Transient Exception:除非修正引发SQLException异常的代码,否则该异常在再次尝试相同JDBC操作失败后被抛出。表3显示了JDBC 4.0新增的SQLNonTransientException异常子类(SQL 2003规范中定义了SQLState类的值):

     Exception class SQLState  value
     SQLFeatureNotSupportedException  0A
     SQLNonTransientConnectionException  08
     SQLDataException  22
     SQLIntegrityConstraintViolationException  23
     SQLInvalidAuthorizationException  28
     SQLSyntaxErrorException  42

       Transient Exception:当先前执行失败的JDBC操作在没有任何应用级功能干涉的情况下可能成功执行时,该异常被抛出。继承自SQLTransientException的新异常如表4所列:

     Exception class SQLState  value
     SQLTransientConnectionException  08
     SQLTransactionRollbackException  40
     SQLTimeoutException  None

      因果关系

      SQLException类现在支持Java SE链式异常机制(又称因果工具),它使我们能在一个JDBC操作中处理多条SQLException异常(如果后台数据库支持多条异常特性)。这种情形发生在执行一条可能会抛出多条SQLException异常的语句时。

      我们可以调用SQLException中的getNextException()方法在异常链中进行迭代。这里是一些处理getNextException()因果关系的范例代码:

    catch(SQLException ex) {
         while(ex != null) {
            LOG.error("SQL State:" + ex.getSQLState());
            LOG.error("Error Code:" + ex.getErrorCode());
            LOG.error("Message:" + ex.getMessage());
            Throwable t = ex.getCause();
            while(t != null) {
                LOG.error("Cause:" + t);
                t = t.getCause();
            }
            ex = ex.getNextException();
        }
    }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章