一般情况下,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类似,不再累述
分享到:
相关推荐
综上所述,当使用 JDBC 连接 Oracle 数据库并遇到字符集不同导致的乱码问题时,可以通过调整 SQL 语句的编码或结果集的编码来解决。这两种方法都可以有效地避免乱码问题的发生,但在实际应用中应根据具体情况选择最...
MySQL Connector/J是官方提供的Java驱动,它实现了JDBC API,使得Java应用程序可以通过标准的JDBC接口与MySQL数据库进行交互,如建立连接、执行SQL查询、处理结果集等。 2. **Oracle JDBC驱动**:`ojdbc14_g.jar`是...
总的来说,jdbc数据集生成器是一个提升开发效率的实用工具,它简化了数据查看和分享的过程,特别是在处理大量数据库查询结果时。通过理解和利用这样的工具,开发者可以更好地管理和操作数据库,提高工作效率。
在处理数据库操作时,理解不同类型的查询结果集及其适用场景至关重要。面对“只进结果集不支持请求的操作”的异常,通过调整查询类型、使用原生SQL或优化数据库连接配置,可以有效避免此类问题,确保应用程序的正常...
JDBC接口提供了丰富的功能,包括执行SQL查询、更新数据、处理结果集等。开发者可以使用PreparedStatement和Statement对象来执行预编译的SQL语句或普通SQL语句,Resultset对象用于获取查询结果。此外,JDBC还支持事务...
使用JDBC驱动,开发者可以编写Java代码来创建数据库连接、执行SQL语句、处理查询结果等。JDBC驱动分为几种类型,如Type 1、Type 2、Type 3和Type 4,其中Type 4是纯Java实现的,直接与数据库通信,通常效率更高且更...
9. **性能优化**:JDBC提供了多种优化技巧,如关闭不再需要的资源(如结果集、Statement和连接),使用连接池来重用连接,以及合理使用`PreparedStatement`避免SQL注入。 10. **JDBC API的扩展**:随着技术的发展,...
- JDBC 2.0 引入了可更新的结果集,允许直接在结果集上进行更新、插入和删除操作,而无需通过 `Statement` 的 `executeUpdate()` 方法执行SQL语句。 - 创建可更新结果集时,需要指定并发性类型,如 `ResultSet....
7. **多种方法和功能**:JDBC不仅支持基本的SQL操作,还包括更复杂的功能,如存储过程调用、游标操作、批处理和结果集的滚动等。这些功能增强了Java应用程序与数据库的交互能力。 综上所述,“异常处理和JDBC”涵盖...
使用SQLJDBC或SQLJDBC4驱动,Java开发者可以使用JDBC API来创建数据库连接,执行SQL语句,处理结果集等。基本步骤如下: - 加载驱动:`Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");` - 建立...
3. **执行SQL语句**:在DAO中,调用`executeQuery()`或`executeUpdate()`方法执行SQL,获取结果集或影响行数。 4. **处理结果**:如果执行的是查询,使用`ResultSet`遍历结果并处理数据。如果是更新操作,获取受...
5. **处理结果**:获取并处理查询结果,例如通过ResultSet对象。 6. **关闭资源**:在操作完成后,务必关闭Statement、ResultSet和Connection以释放资源。 在"jdbc-driver集"中,可能包含了不同数据库的JDBC驱动JAR...
在多表操作、复杂查询或大数据量处理时,JDBC提供了强大的功能和灵活性,使得Java成为开发数据库应用的理想选择。 总之,"JDBC(lib)驱动包集"是一个包含对主要数据库系统支持的重要工具,它简化了Java应用程序与...
`JdbcTemplate`是Spring提供的工具类,用于简化JDBC操作,例如执行SQL和处理结果集。`RowMapper`接口用于将结果集映射到Java对象。 集成Spring Data JDBC可以减少代码量,提高可维护性,并且由于Spring的其他模块...
2. **结果集的维护(Result Set Maintenance)**:允许在结果集中插入、删除和更新行,使得对结果集的操作更加直接。 3. **SQLXML类型(SQLXML Type)**:支持XML数据类型的处理,使数据库和XML数据之间的交互更为...
JDBC驱动是Java程序与数据库之间的桥梁,它允许Java应用程序执行SQL语句,处理结果集,并进行连接管理。Informix提供了多种JDBC驱动版本,以适应不同Java开发环境和JDK版本的需求。 在提供的压缩包"informix-jdbc各...
使用JDBC,开发者可以编写Java程序来连接数据库、执行SQL语句、处理结果集和释放资源。 JDBC核心步骤 1. 添加JAR包 在使用JDBC之前,需要将JDBC驱动程序的JAR包添加到CLASSPATH中。不同的数据库管理系统需要不同...
5. **Unicode增强**:对Unicode字符集的支持得到了加强,处理多语言数据更加便捷。 6. **SQLXML类型**:新增了对XML数据类型的原生支持,可以直接将XML数据作为SQL值进行操作。 7. **Connection的isWrapperFor()和...
本实验旨在让学生掌握使用JDBC API进行数据库连接、SQL语句执行和结果集处理的基本方法,同时加深对SQL语言和Java接口机制的理解。 首先,实验的目标是建立一个学生选课数据库管理系统,要求能够完成记录的增删改查...
JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如执行SQL语句、连接数据库以及处理返回结果等功能。它是Java平台中用于数据库访问的标准API,类似于ODBC...