第 八 章  JDBC 溢出

内容一览

8.1 类似换码符溢出
8.2 外联接溢出
8.3 Date/time溢出
8.4 溢出纯量函数

    JDBC规范(如ODBC)承认一些特殊的SQL卖主(vendor)可能需要相当的RDBMS特征的事实。为了帮助正在写跨越大量数据库产品的轻便型JDBC应用的开发者们,一种专门的escape语法被用来指定开发者们想要运行的一般命令。JDBC驱动程序为这种特殊的数据库把这些escape序列翻译成自然语法。详情请参考Sun? JRE 文档的4.1.5节JDBC Technology Guide和13.4节的JDBC3.0 specification.

    这些escapes的sql statements分解可以通过使用Statement.setEscapeProcessing(false)来禁止。

     Connection.nativeSQL(String sql)提供另一种处理escapes的方法,它把特定的SQL转成适合PostgreSQL? 后台的SQL

    例8.1 使用JDBC溢出

    为了使用JDBC溢出,你只需简单地用SQL代替date/time字面上的值,外连接和用JDBC溢出语法运行。例如:
        ResultSet rs = st.executeQuery("SELECT {fn week({d '2005-01-24'})}");
    是以下语句的简单版本:
        ResultSet rs = st.executeQuery("SELECT extract(week from DATE '2005-01-24')");

8.1 类似换码符溢出

     在使用LIKE的字符串比较中,你可以通过增加以下溢出来指定换码符,而不用通配符("%"和"_"):{escape 'escape-character'}。驱动程序只有在比较式的结尾才支持这个。
    例如,在比较字符串值中,你可以使用"|"作为换码符,而避免使用"_":
    rs = stmt.executeQuery("select str2 from comparisontest
        where str1 like '|_abcd' {escape '|'} ");