来看JDBC基本教程之CallableStatement
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。概述
CallableStatement对象为一切的DBMS供应了一种以尺度情势挪用已贮存历程的办法。已贮存历程贮存在数据库中。对已贮存历程的挪用是CallableStatement对象所含的内容。这类挪用是用一种换码语法来写的,有两种情势:一种情势带了局参,另外一种情势不带了局参数。了局参数是一种输入(OUT)参数,是已贮存历程的前往值。两种情势都可带无数量可变的输出(IN参数)、输入(OUT参数)或输出和输入(INOUT参数)的参数。问号将用作参数的占位符。
在JDBC中挪用已贮存历程的语法以下所示。注重,方括号暗示其间的内容是可选项;方括号自己并非语法的构成部分。
{call历程名[(?,?,...)]}
前往了局参数的历程的语法为:
{?=call历程名[(?,?,...)]}
不带参数的已贮存历程的语法相似:
{call历程名}
一般,创立CallableStatement对象的人应该晓得所用的DBMS是撑持已储存历程的,而且晓得这些历程都是些甚么。但是,假如必要反省,多种DatabaseMetaData办法都能够供应如许的信息。比方,假如DBMS撑持已贮存历程的挪用,则supportsStoredProcedures办法将前往true,而getProcedures办法将前往对已贮存历程的形貌。CallableStatement承继Statement的办法(它们用于处置一样平常的SQL语句),还承继了PreparedStatement的办法(它们用于处置IN参)。
CallableStatement中界说的一切办法都用于处置OUT参数或INOUT参数的输入部分:注册OUT参数的JDBC范例(一样平常SQL范例)、从这些参数中检索了局,大概反省所前往的值是不是为JDBCNULL。
1、创立CallableStatement对象
CallableStatement对象是用Connection办法prepareCall创立的。下例创立CallableStatement的实例,个中含有对已贮存历程getTestData挪用。该历程有两个变量,但不含了局参数:
CallableStatementcstmt=con.prepareCall("{callgetTestData(?,?)}");
个中?占位符为IN、OUT仍是INOUT参数,取决于已贮存历程getTestData。
2、IN和OUT参数
将IN参数传给CallableStatement对象是经由过程setXXX办法完成的。该办法承继自PreparedStatement。所传进参数的范例决意了所用的setXXX办法(比方,用setFloat来传进float值等)。
假如已贮存历程前往OUT参数,则在实行CallableStatement对象之前必须先注册每一个OUT参数的JDBC范例(这是必须的,由于某些DBMS请求JDBC范例)。注册JDBC范例是用registerOutParameter办法来完成的。语句实行完后,CallableStatement的getXXX办法将取回参数值。准确的getXXX办法是为各参数所注册的JDBC范例所对应的Java范例。换言之,registerOutParameter利用的是JDBC范例(因而它与数据库前往的JDBC类型婚配),而getXXX将之转换为Java范例。
作为示例,下述代码先注册OUT参数,实行由cstmt所挪用的已贮存历程,然后检索在OUT参数中前往的值。办法getByte从第一个OUT参数中掏出一个Java字节,而getBigDecimal从第二个OUT参数中掏出一个BigDecimal对象(小数点前面带三位数):
CallableStatementcstmt=con.prepareCall("{callgetTestData(?,?)}");
cstmt.registerOutParameter(1,java.sql.Types.TINYINT);
cstmt.registerOutParameter(2,java.sql.Types.DECIMAL,3);
cstmt.executeQuery();
bytex=cstmt.getByte(1);
java.math.BigDecimaln=cstmt.getBigDecimal(2,3);
CallableStatement与ResultSet分歧,它不供应用增量体例检索年夜OUT值的特别机制。
<p>
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 是一种为 Internet发展的计算机语言 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 是一种将安全性(Security)列为第一优先考虑的语言 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
页:
[1]