下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计JSP(java)教程 → JDBCTM的基础知识:创建 Statement 对象
JDBCTM的基础知识:创建 Statement 对象
日期:2007-6-14 17:02:15 人气:133     [ ]
上一页 [1] [2] [3] 下一页
WHERE Id LIKE `\_%' {escape `\'};


fn 表示标量函数


几乎所有 DBMS 都具有标量值的数值、字符串、时间、日期、系统和转换函数。要使用这些函数,可使用如下转义语法:关键字 fn 后跟所需的函数名及其参数。例如,下列代码调用函数 concat 将两个参数连接在一起:

{fn concat("Hot", "Java")};


可用下列语法获得当前数据库用户名:

{fn user()};


标量函数可能由语法稍有不同的 DBMS 支持,而它们可能不被所有驱动程序支持。各种 DatabaseMetaData 方法将列出所支持的函数。例如,方法 getNumericFunctions 返回用逗号分隔的数值函数列表,而方法 getStringFunctions 将返回字符串函数,等等。

驱动程序将转义函数调用映射为相应的语法,或直接实现该函数。


d、t 和 ts 表示日期和时间文字


DBMS 用于日期、时间和时间标记文字的语法各不相同。JDBC 使用转义子句支持这些文字的语法的 ISO 标准格式。驱动程序必须将转义子句转换成 DBMS 表示。

例如,可用下列语法在 JDBC SQL 语句中指定日期:

{d `yyyy-mm-dd'}


在该语法中,yyyy 为年代,mm 为月份,而 dd 则为日期。驱动程序将用等价的特定于 DBMS 的表示替换这个转义子句。例如,如果 '28- FEB-99' 符合基本数据库的格式,则驱动程序将用它替换 {d 1999-02-28}。

对于 TIME 和 TIMESTAMP 也有类似的转义子句:

{t `hh:mm:ss'}
{ts `yyyy-mm-dd hh:mm:ss.f . . .'}


TIMESTAMP 中的小数点后的秒(.f . . .)部分可忽略。


call 或 ? = call 表示已存储过程



如果数据库支持已存储过程,则可从 JDBC 中调用它们,语法为:

{call procedure_name[(?, ?, . . .)]}


或(其中过程返回结果参数):

{? = call procedure_name[(?, ?, . . .)]}


方括号指示其中的内容是可选的。它们不是语法的必要部分。

输入参数可以为文字或参数。有关详细信息,参见 JDBC 指南中第 7 节,“CallableStatement”。

可通过调用方法 DatabaseMetaData.supportsStoredProcedures 检查数据库是否支持已存储过程。



oj 表示外部连接



外部连接的语法为

{oj outer-join}


其中 outer-join 形式为

table LEFT OUTER JOIN {table / outer-join} ON search-condition


外部连接属于高级功能。有关它们的解释可参见 SQL 语法。JDBC 提供了三种 DatabaseMetaData 方法用于确定驱动程序支持哪些外部连接类型:supportsOuterJoins、supportsFullOuterJoins 和 supportsLimitedOuterJoins。


方法 Statement.setEscapeProcessing 可打开或关闭转义处理;缺省状态为打开。当性能极为重要时,程序员可能想关闭它以减少处理时间。但通常它将出于打开状态。应注意: setEscapeProcessing 不适用于 PreparedStatement 对象,因为在调用该语句前它就可能已被发送到数据库。有关预编译的信息,参见 PreparedStatement。


4.1.6 使用方法 execute
execute 方法应该仅在语句能返回多个 ResultSet 对象、多个更新计数或 ResultSet 对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。例如,用户可能执行一个已存储过程(使用 CallableStatement 对象 - 参见第 135 页的 CallableStatement),并且该已存储过程可执行更新,然后执行选择,再进行更新,再进行选择,等等。通常使用已存储过程的人应知道它所返回的内容。

因为方法 execute 处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。例如,假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程后,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。如果已知某个过程返回两个更新计数,则首先调用方法 getUpdateCount,然后调用 getMoreResults,并再次调用 getUpdateCount。

对于不知道返回内容,则情况更为复杂。如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。调用方法 getResultSet 可以获得两个或多个 ResultSet 对象中第一个对象;或调用方法 getUpdateCount 可以获得两个或多个更新计数中第一个更新计数的内容。

当 SQL 语句的结果不是结果集时,则方法 getResultSet 将返回 null。这可能意味着结果是一个更新计数或没有其它结果。在这种情况下,判断 null 真正含义的唯一方法是调用方法 getUpdateCount,它将返回一个整数。这个整数为调用语句所影响的行数;如果为 -1 则表示结果是结果集或没有结果。如果方法 getResultSet 已返回 null(表示结果不是 ResultSet 对象),则返回值 -1 表示没有其它结果。也就是说,当下列条件为真时表示没有结果(或没有其它结果):

((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.