`
LuisFigo
  • 浏览: 38290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC多结果集处理

    博客分类:
  • JDBC
阅读更多

      一般情况下,statement执行execute后只会返回单一结果集,如果想一次返回多个结果集,就得用JDBC驱动的多结果集处理方式。各个数据库厂商有不同的实现方式,但共同的是他们都采用存储过程来实现。

 

一、Oracle多结果集是基于ref cursor实现的

 

Create table person (
Id  int, name varchar2(50)
)
Insert into person values(1, ‘test’);
 

 

Create or replace package pack as
Type cur is ref cursor;
End pack;
 
Create or replace procedure proc_test ( first 
out pack.cur ) as
Begin 
Open first for select * from person;
End proc_test;
 
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.jdbc.driver.OracleTypes;
public class TestProCur {
public static void  main(){
  Connection con = null;
  ResultSet rs = null;
  CallableStatement cst = null;
  try{
        Class.forName("oracle.jdbc.driver.OracleDriver);
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "system", "system");
        String sql = "{call  proc_test(?)}";
        cst = con.prepareCall(sql);
        cst.registerOutParameter(1, OracleTypes.CURSOR);
        cst.execute();
        rs = (ResultSet)cst.getObject(1);
        while(rs.next()){
              System.out.println(rs.getString(2));
        }
  }catch(Exception e){
    e.printStackTrace();
  }finally{
      try{
         if(rs !=null){
              rs.close();
         }
         if(cst != null){
              cst.close();
         }
         if(con != null){
              con.close();
         }
      }catch(Exception e){
         e.printStackTrace();
      }
 }
}
 
}

 

二、神通数据库(国产)多结果集处理方式与Oracle类似

 

三、Mysql多结果集是基于存储过程中的查询语句的

 

CREATE PROCEDURE proc_test()  
BEGIN  
  select * from person
  select * from person;   
END;
 
String sql = "{call proc_test()}";  
ctmt = conn.prepareCall(sql);  
boolean hadResults = ctmt.execute();  
int i=0;  
ResultSet rs = null;
while (hadResults) {  
    System.out.println("result No:----"+(++i));  
    rs = ctmt.getResultSet();  
    while (rs != null && rs.next()) {  
        int id1 = rs.getInt(1);  
        String name1 = rs.getString(2);  
        System.out.println(id1 + ":" + name1);  
    }  
    hadResults = ctmt.getMoreResults(); //检查是否存在更多结果集  
}  

 

四、SqlServer多结果集处理方式与Mysql类似,不再累述

 

0
0
分享到:
评论

相关推荐

    jdbc连接oracle字符集不同出现乱码

    综上所述,当使用 JDBC 连接 Oracle 数据库并遇到字符集不同导致的乱码问题时,可以通过调整 SQL 语句的编码或结果集的编码来解决。这两种方法都可以有效地避免乱码问题的发生,但在实际应用中应根据具体情况选择最...

    JDBC驱动包合集(mysql、oracle、mssql等数据库)

    MySQL Connector/J是官方提供的Java驱动,它实现了JDBC API,使得Java应用程序可以通过标准的JDBC接口与MySQL数据库进行交互,如建立连接、执行SQL查询、处理结果集等。 2. **Oracle JDBC驱动**:`ojdbc14_g.jar`是...

    jdbc数据集生成器

    总的来说,jdbc数据集生成器是一个提升开发效率的实用工具,它简化了数据查看和分享的过程,特别是在处理大量数据库查询结果时。通过理解和利用这样的工具,开发者可以更好地管理和操作数据库,提高工作效率。

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    在处理数据库操作时,理解不同类型的查询结果集及其适用场景至关重要。面对“只进结果集不支持请求的操作”的异常,通过调整查询类型、使用原生SQL或优化数据库连接配置,可以有效避免此类问题,确保应用程序的正常...

    达梦8数据库jdbc包jar合集

    JDBC接口提供了丰富的功能,包括执行SQL查询、更新数据、处理结果集等。开发者可以使用PreparedStatement和Statement对象来执行预编译的SQL语句或普通SQL语句,Resultset对象用于获取查询结果。此外,JDBC还支持事务...

    impala数据库JDBC驱动集

    使用JDBC驱动,开发者可以编写Java代码来创建数据库连接、执行SQL语句、处理查询结果等。JDBC驱动分为几种类型,如Type 1、Type 2、Type 3和Type 4,其中Type 4是纯Java实现的,直接与数据库通信,通常效率更高且更...

    jdbc jdbc jdbc

    9. **性能优化**:JDBC提供了多种优化技巧,如关闭不再需要的资源(如结果集、Statement和连接),使用连接池来重用连接,以及合理使用`PreparedStatement`避免SQL注入。 10. **JDBC API的扩展**:随着技术的发展,...

    JDBCJDBC高级应用

    - JDBC 2.0 引入了可更新的结果集,允许直接在结果集上进行更新、插入和删除操作,而无需通过 `Statement` 的 `executeUpdate()` 方法执行SQL语句。 - 创建可更新结果集时,需要指定并发性类型,如 `ResultSet....

    异常处理和JDBC

    7. **多种方法和功能**:JDBC不仅支持基本的SQL操作,还包括更复杂的功能,如存储过程调用、游标操作、批处理和结果集的滚动等。这些功能增强了Java应用程序与数据库的交互能力。 综上所述,“异常处理和JDBC”涵盖...

    sqljdbc和sqljdbc4 sqlserver最新驱动

    使用SQLJDBC或SQLJDBC4驱动,Java开发者可以使用JDBC API来创建数据库连接,执行SQL语句,处理结果集等。基本步骤如下: - 加载驱动:`Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");` - 建立...

    JDBC多层架构解析图

    3. **执行SQL语句**:在DAO中,调用`executeQuery()`或`executeUpdate()`方法执行SQL,获取结果集或影响行数。 4. **处理结果**:如果执行的是查询,使用`ResultSet`遍历结果并处理数据。如果是更新操作,获取受...

    jdbc-driver集

    5. **处理结果**:获取并处理查询结果,例如通过ResultSet对象。 6. **关闭资源**:在操作完成后,务必关闭Statement、ResultSet和Connection以释放资源。 在"jdbc-driver集"中,可能包含了不同数据库的JDBC驱动JAR...

    JDBC(lib)驱动包集

    在多表操作、复杂查询或大数据量处理时,JDBC提供了强大的功能和灵活性,使得Java成为开发数据库应用的理想选择。 总之,"JDBC(lib)驱动包集"是一个包含对主要数据库系统支持的重要工具,它简化了Java应用程序与...

    Spring Data JDBC与JDBC的区别

    `JdbcTemplate`是Spring提供的工具类,用于简化JDBC操作,例如执行SQL和处理结果集。`RowMapper`接口用于将结果集映射到Java对象。 集成Spring Data JDBC可以减少代码量,提高可维护性,并且由于Spring的其他模块...

    jdbc2000,jdbc2005

    2. **结果集的维护(Result Set Maintenance)**:允许在结果集中插入、删除和更新行,使得对结果集的操作更加直接。 3. **SQLXML类型(SQLXML Type)**:支持XML数据类型的处理,使数据库和XML数据之间的交互更为...

    informix-jdbc各版本驱动包合集.zip

    JDBC驱动是Java程序与数据库之间的桥梁,它允许Java应用程序执行SQL语句,处理结果集,并进行连接管理。Informix提供了多种JDBC驱动版本,以适应不同Java开发环境和JDK版本的需求。 在提供的压缩包"informix-jdbc各...

    jdbc核心代码.docx

    使用JDBC,开发者可以编写Java程序来连接数据库、执行SQL语句、处理结果集和释放资源。 JDBC核心步骤 1. 添加JAR包 在使用JDBC之前,需要将JDBC驱动程序的JAR包添加到CLASSPATH中。不同的数据库管理系统需要不同...

    JDBC6和JDBC14

    5. **Unicode增强**:对Unicode字符集的支持得到了加强,处理多语言数据更加便捷。 6. **SQLXML类型**:新增了对XML数据类型的原生支持,可以直接将XML数据作为SQL值进行操作。 7. **Connection的isWrapperFor()和...

    JavaJDBC编程

    本实验旨在让学生掌握使用JDBC API进行数据库连接、SQL语句执行和结果集处理的基本方法,同时加深对SQL语言和Java接口机制的理解。 首先,实验的目标是建立一个学生选课数据库管理系统,要求能够完成记录的增删改查...

    JDBC学习资料 jdbc编程

    JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如执行SQL语句、连接数据库以及处理返回结果等功能。它是Java平台中用于数据库访问的标准API,类似于ODBC...

Global site tag (gtag.js) - Google Analytics