1、 SQL queries 返回 result sets; SQL updates 返回被更新的数据数目. 有时候我们可能不知道执行的SQL将使查询还是更新或者混合两种混合类型!这时候excute出场了。
Statement提供了下面的方法用来处理返回类型的多样化问题。
boolean execute(String sql);
ResultSet getResultSet();
int getUpdateCount();
boolean getMoreResults();
boolean getMoreResults(int current);
2、Excute()方法可以返回的是多个result组成的results集合,result可以是ResultSet ,整数或者两者混合(result相当于一个数组里面存有ResultSet 和整数)。注意到excute()方法的返回式布尔型,如果执行成功返回的是True,如果是失败是False。
第二个方法getResultSet();测试当前的result,如果是集合,那么返回一个ResultSet,如果是Null那么说明当前的结果集是一个整数 ,可以使用第三个方法getUpdateCount();获得更新的数目。
第三和第四个方法用来移动到下一个result.如果下一个result是ResultSet那么返回true,如果null或者证书那么返回的是false.
第四个方法有三个参数,分别意义如下:
CLOSE_CURRENT_RESULT: 只要返回下一个result,那么关闭当前的result
KEEP_CURRENT_RESULT: 当取下一个result时不关闭当前的result
CLOSE_ALL_RESULTS: 关闭前面所有的result当开始下一个时.当(!getMoreResults() && (getUpdateCount() == -1))时已经移动到了集合的最后一个.
...
Connection myConnection = DriverManager.getConnection(url,
"javauser", "hotjava");
Statement myStatement = myConnection.createStatement();
ResultSet rs;
if (myStatement.execute(sqlStatement))
{
// we have a ResultSet
rs = myStatement.getResultSet();
while (rs.next())
{
// process the rows
}
}
else
{
// we have an update count
System.out.println(myStatement.getUpdateCount());
}
myStatement.close();
myConnection.close();
...
...
处理多种返回类型
...
...
Connection myConnection = DriverManager.getConnection(url,
"javauser", "hotjava");
Statement myStatement = myConnection.createStatement();
boolean resultSetIsAvailable;
boolean moreResultsAvailable;
int i = 0;
int res=0;
resultSetIsAvailable = myStatement.execute(sqlText);
ResultSet rs = null;
for (moreResultsAvailable = true; moreResultsAvailable; )
{
if (resultSetIsAvailable)
{
if ((rs = myStatement.getResultSet()) != null) {
// we have a resultset
ResultSetMetaData rsmd = rs.getMetaData();
int numCols = rsmd.getColumnCount();
// display column headers
for (i = 1; i <= numCols; i++)
{
if (i > 1) System.out.print(", ");
System.out.print(
rsmd.getColumnLabel(i));
}
System.out.println("");
// step through the rows
while (rs.next())
{
// process the columns
for (i = 1; i <= numCols; i++)
{
if (i > 1)
System.out.print(", ");
System.out.print(rs.getString(i));
}
System.out.println("");
}
}
}
else
{
if ((res = curStmt.getUpdateCount()) != -1)
{
// we have an updatecount
System.out.println(res + " row(s) affected.");
}
// else no more results
else
{
moreResultsAvailable = false;
}
}
if (moreResultsAvailable)
{
resultSetIsAvailable =
myStatement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
}
}
if (rs != null) rs.close();
myStatement.close();
...
...
3、另外两个常用的方法:
Statement的Cancel 方法:
void cancel();
...
java.sql.Statement myStatement =
myConnection.createStatement();
ResultSet rs = myStatement.executeQuery("SELECT name, title, salary FROM
employees");
int i = 0;
while (rs.next()) {
// increment the counter
i++;
// print the columns of the row that was retrieved
String empName = rs.getString("name");
String empTitle = rs.getString("title");
long empSalary = rs.getLong("salary");
System.out.println("Employee " + empName + " is " + empTitle + "
and earns $" + empSalary);
// cancel all results if 100 rows of data were already
// retrieved
if (i >= 100) myStatement.cancel();
}
...
...
ResultSet的Close 方法:ResultSet不需要使用了
void close();
分享到:
相关推荐
2. **修复执行方法异常**:在使用原版驱动时,开发者可能会遇到使用`execute()`和`executeUpdate()`方法时抛出的空指针异常。这个问题可能源于驱动内部的bug或者特定环境下的兼容性问题。"Access_JDBC30.jar"通过...
6. **JDBC RowSet**:Spring JDBC也支持JDBC 3.0引入的ScrollableResultSet和WebRowSet,提供了更灵活的数据遍历和序列化能力。 7. **SqlProvider**:对于动态生成SQL的需求,Spring JDBC提供了SqlProvider接口,...
Microsoft提供了用于连接SQL Server 2005的JDBC驱动,它支持JDBC 3.0和4.0规范。使用方式如下: ```java Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.get...
- **注册驱动**:早期版本的JDBC中(如JDBC 3.0及以前),使用 `Class.forName` 可以将数据库驱动注册到JDBC驱动管理器中,这样应用程序就可以通过JDBC API访问数据库。 - **类加载**:尽管在较新版本的JDBC(如JDBC...
3. 高级查询功能:`JdbcTemplate`提供了各种方法来执行SQL查询,如`queryForList()`, `queryForObject()`, `update()`, `execute()`等。 **Spring AOP(面向切面编程)和声明式事务管理:** 1. **Spring AOP**:AOP...
这个驱动程序实现了JDBC 3.0规范,为开发者提供了高效且功能丰富的接口来操作Oracle数据库。 Oracle JDBC驱动主要有四种类型: Thin、OCI、JMS和WebLogic Server。其中,Thin驱动是最常用的,它是一个纯Java实现,...
- `execute(String sql)`:执行任意SQL语句,返回boolean值表示是否返回ResultSet。 **3.2 CRUD操作** - **创建(Create)**:使用`executeUpdate("INSERT INTO ...")`。 - **读取(Read)**:使用`executeQuery(...
public String execute() { if (!"admin".equals(username)) { super.addFieldError("username", "用户名错误"); return ERROR; } // 其他逻辑... return SUCCESS; } } ``` #### Hibernate3.0配置 1. **...
### Spring2.5 + Struts1.3.8 + Hibernate3.0 整合知识点详解 #### 一、概述 Spring2.5 + Struts1.3.8 + Hibernate3.0 (简称SSH)整合是一种典型的Java Web开发模式,旨在通过组合这三种技术框架来构建高性能、易于...
2. **API函数**:ODBC定义了一系列的C语言函数,如SQLConnect、SQLDisconnect、SQLPrepare、SQLExecute等,这些函数构成了ODBC API。开发者通过调用这些函数实现与数据库的交互,例如建立连接、执行SQL语句、获取...
在Spring框架中,传统的Web应用通常会依赖于`web.xml`来配置ApplicationContext,但随着Spring的发展,特别是Spring 3.0引入的JavaConfig配置方式,我们不再需要`web.xml`来初始化Spring容器。本篇文章将深入探讨...
- **SQLExecute**:执行预编译的SQL语句。 - **SQLFetch**:获取查询结果集的一行数据。 4. **ODBC连接字符串** - 连接字符串包含了DSN、数据库、用户名和密码等信息,例如:"DSN=myDSN;UID=myUsername;PWD=...
Quartz是一个强大的、完全由Java编写的任务调度库,它可以与JDBC、JMS、JTA等其他Java技术无缝集成,提供了丰富的API和多种调度策略。 首先,我们来了解一下Quartz的核心概念: 1. **作业(Jobs)** 作业是实际要...
本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说...
"jdbcUrl": ["jdbc:mysql://host:port/database"], "table": ["your_table"] } ] } } ``` 2. **writer**:定义数据目标,这里是DorisWriter,包括Doris集群信息、表名、导入方式等: ```json "writer": { ...
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz # 更多配置... ``` **三、定义作业和触发器** 1. **定义作业**:作业是需要定时执行的任务,可以创建一个实现了`org.quartz.Job`接口的类。...
要安装 JavaDB,需要从 Oracle 官方网站下载最新版本的 JavaDB(当前版本为 10.5.3.0),下载完成后,运行安装程序按照默认设置安装。在安装完成后,JavaDB 将被安装在 C:\Program Files\Sun\JavaDB 目录下。 配置...
public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("执行定时任务"); } } ``` 这个示例中,我们定义了一个`QuartzJob`服务,使用Quartz的API来定义任务调度...
public String execute() { // 获取当前页码和每页显示的记录数 currentPage = Integer.parseInt(ServletActionContext.getRequest().getParameter("currentPage")); pageSize = Integer.parseInt...
在本试题中,考生需要基于指定的硬件和软件环境,使用Eclipse IDE,结合JDK 1.5,Oracle数据库,Tomcat 6.0服务器,以及SSH(Struts2 2.0,Hibernate 3.0,Spring 2.0)框架,完成一个银行取款项目的编程任务。...