您的位置:首页 > 编程语言 > Java开发

java jdbc返回多个结果集,的处理类和方法

2010-12-13 22:46 375 查看
1、处理存储过程返回单个结果集的范例:

/*****************************************************************************/
<%--
作者:何志强[hhzqq@21cn.com]
日期:2000-08-04
   2000-08-16
版本:1.1
功能:JSP数据库操作例程 - 存储过程 - JDBC-ODBC - SQL Server

SQL Server的存储过程如下:
create procedure sp_jsptest
@yourname varchar(50),
@myname varchar(50) output
as
select "您好, "+@yourname+ ",非常高兴认识您,^_^ "
set @myname = "何志强 "
return 1
go
--%>

<%@ page contentType= "text/html;charset=gb2312 "%>

<%
//变量声明
java.lang.String strName; //姓名

//取得用户输入的数据
strName = request.getParameter( "name ");
if(strName==null){//用户没有输入姓名
%>

<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> JSP数据库操作例程 - 存储过程 - JDBC-ODBC - SQL Server </title>
</head>
<body>

<form action= "jdbc-odbc.jsp " method= "post ">
您尊姓大名: <input type= "text " name= "name " maxlength= "50 ">
<input type= "submit " value= "提交 ">
</form>

</body>
</html>

<%
}
else{
//对用户输入的数据作必要的字符编码转换
strName = new java.lang.String(strName.getBytes( "iso-8859-1 "));

//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.CallableStatement sqlStmt; //可调用语句对象
java.sql.ResultSet sqlRst; //结果集对象

java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句

java.lang.String strWelcome; //欢迎词
java.lang.String strMyName; //我的姓名
int intReturn; //返回值

//装载JDBC-ODBC驱动程序
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");

//设置数据库连接字符串
strCon = "jdbc:odbc:jspdemo ";

//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon, "sa ", " ");

//准备SQL语句
strSQL = "{? = call sp_jsptest(?,?)} ";

//准备可调用语句对象
sqlStmt = sqlCon.prepareCall(strSQL);

//设置输入参数
sqlStmt.setString(2,strName);

//登记输出参数
sqlStmt.registerOutParameter(1,java.sql.Types.INTEGER);
sqlStmt.registerOutParameter(3,java.sql.Types.VARCHAR);

//执行该存储过程并返回结果集
sqlRst = sqlStmt.executeQuery();

//获取来自结果集中的数据
sqlRst.next();
strWelcome = sqlRst.getString(1);

//获取输出参数的值
strMyName = sqlStmt.getString(3);

//获取返回值
intReturn = sqlStmt.getInt(1);

//关闭记录集
sqlRst.close();

//关闭可调用语句对象
sqlStmt.close();

//关闭数据库对象
sqlCon.close();
%>

<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> JSP数据库操作例程 - 存储过程 - JDBC-ODBC - SQL Server </title>
</head>
<body>

<%=strWelcome%> <br>
我是 <%=strMyName%> <br>
返回值是 <%=intReturn%>

</body>
</html>

<%
}
%>
/*****************************************************************************/

Statement接口提供了三种执行SQL语句的方法:
executeQuery、executeUpdate和execute。使用哪一个方法由SQL语句所产生的内容决定。
executeQuery 方法用语返回单个结果集
execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知SQL字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。例如,用户可能执行一个已存储过程,并且该已存储过程可执行更新,然后执行选择,再进行更新,再进行选择,等等。通常使用已存储过程的人应知道它所返回的内容。

  因为方法execute处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。例如,假定已知某个过程返回两个结果集,则在使用方法execute执行该过程后,必须调用方法getResultSet获得第一个结果集,然后调用适当的getXXX方法获取其中的值。要获得第二个结果集,需要先调用getMoreResults方法,然后再调用getResultSet方法。如果已知某个过程返回两个更新计数,则首先调用方法getUpdateCount,然后调用getMoreResults,并再次调用getUpdateCount。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐