因为sqlserver2k的官方驱动问题,一直以来用jdbc没有很好的办法取多结果集,公司系统里采用的是2种方式来搞,一种是增删查改用jdbc方式,对报表统计那块就采用odbc的方式,因为最近要改为连接池访问数据库,所以才有时间专门针对取多结果集的问题进行研究。
原来在odbc中取结果集的方式是
Connection DBConn = null;
Statement stmt = null;
ResultSet RS = null;
DataBase db = new DataBase();
String temp = "";
StringBuffer sb = new StringBuffer();
DBConn = db.connect(Database);
try
{
stmt = DBConn.createStatement();
stmt.execute(SQL);
RS = stmt.getResultSet();
while (RS == null && stmt.getMoreResults()) {
RS = stmt.getResultSet();
}
int c;
sb.append("<?xml version=\"1.0\" encoding=\"" + this.encoding + "\"?>");
sb.append("<root>");
while (true) {
if (RS != null) {
while (RS.next()) {
InputStream is = RS.getBinaryStream(1);
InputStreamReader isr = new InputStreamReader(is,"UnicodeLittle");
while ((c = isr.read()) != -1) {
sb.append((char) c);
}
}
}
if (stmt.getMoreResults()) {
RS.close();
RS = stmt.getResultSet();
} else {
break;
}
}
sb.append("</root>");
}
catch(Exception e)
{
return e.getMessage();
}
finally
{
db.close(RS, stmt, DBConn);
}
return sb.toString();
上面是由存储过程生成xml文件用odbc读取并转化为字符串,现在使用了jdbc方式,取结果集的代码如下:
Connection DBConn = null;
CallableStatement stmt = null;
ResultSet RS = null;
DataBase db = new DataBase();
String temp = "";
StringBuffer sb = new StringBuffer();
DBConn = db.connectjdbc(Database);
try
{
stmt=DBConn.prepareCall(SQL, ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
stmt.executeQuery();
int updateCount=-1;
sb.append("<?xml version=\"1.0\" encoding=\"" + this.encoding+ "\"?>");
sb.append("<root>");
do{
updateCount = stmt.getUpdateCount();
if(updateCount != -1){//说明当前行是一个更新计数
// 处理.
stmt.getMoreResults();
continue;//已经是更新计数了,处理完成后应该移动到下一行
// 不再判断是否是ResultSet
} else {
while (true)
{
RS = stmt.getResultSet();
if (RS != null) {
ResultSetMetaData rsmd = RS.getMetaData(); //获取字段名
int numberOfColumns = rsmd.getColumnCount(); //获取字段数
int i=0;
while(RS.next()){ //将查询结果取出
for (i=1; i<=numberOfColumns;i++){
String date=RS.getString(i);
sb.append(date);
}
}
RS.close();
}
if (stmt.getMoreResults())
{
RS = stmt.getResultSet();
}
else {
break;
}
}
}
}while(!(updateCount == -1 && RS == null));
}
catch(Exception e)
{
return e.getMessage();
}
finally
{
db.close(RS, stmt, DBConn);
}
sb.append("</root>");
return sb.toString();
分享到:
相关推荐
执行Sqlserver存储过程返回DataSet
eclipse使用jdbc方式连接sql server 2012数据库 调用存储过程
SQL Server存储过程示例,在存储工程中Transaction使用示例,游标的使用示例,自定义异常的使用示例,以及Java调用SQL Server存储过程的示例代码。包括JDBC和Spring两种调用方式。
使用jdbc访问SqlServer数据库的存储过程
使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示: {call procedure-name} 作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中...
按照我们正常的业务逻辑,存储过程数据首先是分页,其次接受若干查询条件,返回分页结果集的同时还需要返回记录总数给客户端。 我对于这样一个业务存储过程总结如下:1、内核层,通常也就是要查询的字段或者要计算...
此文档主要是将SQLServer数据脚本转为达梦数据库数据脚本,截图为主,有需要的可以参考!
它是数据的集合,可以包含多个表、视图、索引、存储过程等。 表(Table): 表是 SQL Server 中最常见的数据存储结构。它由一系列有序的行和列组成,用于存储数据。每个表有一个名称,并且由一个或多个列组成。 列...
NULL 博文链接:https://sxpujs.iteye.com/blog/376972
jdbc callStatement sql server 存储过程 愿与大家共享
为了解决这种大数据量请求的问题,就不得不使用分页模式了 在这方面,JDBC就强悍得多,它可以将指定的行数和SQL请求一并发送给SQL Server,这样只返回分页后的数据,JDBC的原理还不清楚,但在实际使用中,速度还是...
jdbc for SQL Server,sqljdbc4.jar,测试可用。 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据。 执行流程: 连接数据源,如:数据库。 为数据库传递查询和更新指令。 处理数据库...
ms-sqlserver-jdbc-tester 一个简单的Spring Boot命令行应用程序,用于测试JDBC与SQL Server数据库的连接。怎么跑从页面下载JAR,或者从该存储库中签出代码并运行: mvn clean package执行JAR文件。 下面的例子: ...
在SQL_SERVER中使用分布式事务全攻略(图解)
4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的对象 4.3.2 使用成批更新的实例 4.4 行集合对象 4.4.1 设计时行集合 4.4.2 运行时行集合 4.4.3 非标准JDBC API...
2)数据库连接方式是使用JDBC For SQL Server驱动。 用户使用时要修改opendata.jsp文件,修改SQL Server登陆用户名和密码。 3)目前的数据库连接、访问、修改都是通过页面完成,效率不是太高,在新版本中将使用...
目的:使用JDBC连接MySQL数据库并且完成增删改查。 介绍:1)一种执行SQL语言的Java API。... 5)jdbc可以直接调用数据库存储过程。 6)jdbc操作数据库的效率很高。 7)学会了jdbc,什么数据库存取数据都会了。
只需2个方法,getData、updateData你就可以完成查询和更新数据库数据,通过重载形式定义,支持普通SQL语句和存储过程。 目前DBHelper暂只支持连接主流的MySQL、Oracle、SQL Server。使用DBHelper将为你带来巨大便利...
jdbc MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而...用于远程连接 sql server 执行sql语句,调取存储过程等
支持mysql和oracle存储过程,out参数、多结果集返回(1.6) 支持zookeeper协调主从切换、zk序列、配置zk化(1.6) 支持库内分表(1.6) 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)...