转自:
http://blog.csdn.net/axman/archive/2006/07/07/887816.aspx
关于Statement对象:
前面说过,Statement对象是用来绑定要执行的操作的,在它上面有三种执行方法:
即用来执行查询操作的executeQuery(),用来执行更新操作的executeUpdate()和用来执行
动态的未知的操作的execute().
JDBC在编译时并不对要执行的SQL语句检测,只是把它看着一个String,只有在驱动
程序执行SQL语句时才知道正确与否.
一个Statement对象默认同时只能有一个结果集在活动.这是宽容性的,就是说即使没有
调用ResultSet的close()方法,只要打开第二个结果集就隐含着对上一个结果集的关闭.所以
如果你想同时对多个结果集操作,就要创建多个Statement对象,如果不需要同时操作,那么可
以在一个Statement对象上顺序操作多个结果集.(不过当我修改这篇文章的时候已经可以同时
保持多个结果集了)
这里我不得不特别说明一下,很多人会用一个Statement进行嵌套查询,然后就来问
我说为什么不能循环?道理上面已经说清楚了.我们来详细分析一下嵌套查询:
Connection conn = null;
Statement stmt = null;
conn = .......;
stmt = conm.createStatement(xxxxxx);
ResultSet rs = stmt.executeQuery(sql1);
while(rs.next()){
str = rs.getString(xxxxx);
ResultSet rs1 = stmt.executeQuery("select * from 表 where 字段=str");
}
当stmt.executeQuery("select * from 表 where 字段=str");赋给rs1时,这时隐含的操作
是已经关闭了rs,你还能循环下去吗?
所以如果要同时操作多个结果集一定要让它他绑定到不同的Statement对象上.好在一个connection
对象可以创建任意多个Statement对象,而不需要你重新获取连结.
关于获取和设置Statement的选项:只要看看它的getXXX方法和setXXX方法就明白了,这儿
作为基础知识只提一下以下几个:
setQueryTimeout,设置一个SQL执行的超时限制.
setMaxRows,设置结果集能容纳的行数.
setEscapeProcessing,如果参数为true,则驱动程序在把SQL语句发给数据库前进行转义替
换,否则让数据库自己处理,当然这些默认值都可以通过get方法查询.
Statement的两个子类:
PreparedStatement:对于同一条语句的多次执行,Statement每次都要把SQL语句发送给数据
库,这样做效率明显不高,而如果数据库支持预编译,PreparedStatement可以先把要执行的语句一次发
给它,然后每次执行而不必发送相同的语句,效率当然提高,当然如果数据库不支持预编译,
PreparedStatement会象Statement一样工作,只是效率不高而不需要用户工手干预.
另外PreparedStatement还支持接收参数.在预编译后只要传输不同的参数就可以执行,大大
提高了性能.
PreparedStatement ps = conn.prepareStatement("select * from 表 where 字段=?");
ps.setString(1,参数);
ResultSet rs = ps.executeQuery();
CallableStatement:是PreparedStatement的子类,它只是用来执行存储过程的.
CallableStatement sc = conn.prepareCall("{call query()}");
ResultSet rs = cs.executeQuery();
关于更高级的知识我们在JDBC高级应用中介绍.
分享到:
相关推荐
### JDBC基础知识总结 #### 一、概述 JDBC(Java Database Connectivity)是一种标准的Java API,用于连接并操作各种类型的数据库。它从物理结构上说就是一套Java语言访问数据库的接口集合,本质上则是调用者...
### JDBC基础教程之ResultSet对象详解 #### 一、ResultSet对象概览 `ResultSet`对象是Java Database Connectivity (JDBC) API中的一个核心组件,用于处理SQL查询结果。它充当了一个临时的数据存储,其中包含了所有...
【JDBC基础】 JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准Java API,它允许Java开发者在程序中执行SQL语句并与各种数据库进行交互。JDBC为Java程序员提供了一种统一的方式来连接和操作...
### JDBC基础 1. **JDBC简介**:JDBC是Java API,用于与各种数据库进行连接,执行SQL语句并处理结果。它提供了一套统一的接口,使得开发者无需关心底层数据库的细节。 2. **JDBC驱动**:根据不同的数据库系统,...
这些知识点涵盖了JDBC的基础概念、API介绍以及编程流程,对于初学者来说是非常宝贵的参考资料。通过理解这些概念和API,开发者可以更好地使用JDBC进行数据库操作,提高应用程序的性能和安全性。
总之,JDBC规范文档是了解Java数据库编程的基础,无论是数据库开发者、还是应用程序开发者,都需要对其规范有深入的理解。通过遵循JDBC规范,开发者可以编写出能够在多种数据库系统中移植的代码,同时确保代码的可...
本文将基于“JDBC 开发指南”提供的内容,深入探讨 JDBC 的基础知识及其在实际应用中的作用。 #### 二、JDBC NetServer 概览 ##### 2.1 概述 JDBC NetServer 是一款用于实现 Java 应用程序与远程数据库之间通信的...
1. msbase.jar:这个文件是基础类库,包含了JDBC驱动的基本组件,提供了与数据库进行通信的基础功能。这些功能包括但不限于建立网络连接、处理结果集、执行SQL命令等。通过这个jar包,开发者可以创建和管理到SQL ...
- `java.sql`包含基础的JDBC类和接口,如`Connection`, `Statement`, `ResultSet`等。 - `javax.sql`包含高级功能,例如`DataSource`等。 - **`DriverManager`类**: - **作用**:用于创建与数据库的连接。 - *...
一、jdbc 基础 jdbc 是 Java 中访问数据库的标准 API,提供了统一的接口来访问不同的数据库管理系统。jdbc 的主要组件包括: * DriverManager:负责管理数据库连接的驱动程序。 * Connection:表示与数据库的连接...
本教程以"web基础JDBC+Servlet+jsp"为主题,旨在帮助初学者掌握这三个核心概念,实现完整的CRUD(创建、读取、更新、删除)操作。下面将详细介绍这三个技术及其在Web开发中的应用。 **JDBC(Java Database ...
1. **java.sql**:这是JDBC的基础包,包含了用于基本数据库编程的服务,例如创建连接、执行语句、准备语句和运行批处理查询等。此外,还有一些高级处理,如批处理更新、事务隔离和可滚动结果集等。 2. **javax.sql**...
### JDBC学习基础笔记详解 #### 一、JDBC与ODBC概述 JDBC(Java Database Connectivity)是Java中用于连接数据库的标准接口,它允许Java应用程序与各种类型的数据库进行交互,而无需关心底层数据库的具体实现。...
1. **msbase.jar**: 包含基础的JDBC驱动程序类,提供基本的数据库连接功能。 2. **mssqlserver.jar**: 提供SQL Server特定的数据库访问功能,比如处理SQL Server特有的数据类型和函数。 3. **msutil.jar**: 包含实用...
标题“JDBC基础知识1_保存大文本_分页_批处理”揭示了本文将要讨论的是Java数据库连接(Java Database Connectivity, JDBC)的基础知识,主要包括如何在数据库中处理大文本数据、实现分页查询以及利用批处理提高...
总结来说,"libSQLServer2000jdbc三驱动"是Java开发者连接到SQL Server 2000数据库的关键工具,由三个JAR文件组成,分别提供了基础连接功能、SQL Server特有功能和辅助工具。使用这些驱动,Java应用程序可以无缝地与...
【描述】中提到,该压缩包非常精简,只有三个关键的JAR文件,这通常意味着它包含了Hive JDBC驱动本身,可能还有必要的依赖库,确保在各种环境中都能顺利运行,执行Hive SQL语句。Hive SQL是Hive提供的SQL方言,用于...
其次,msbase.jar包含了一些基础的JDBC支持类,这些类对于建立到SQL Server的连接至关重要。它提供了数据库连接的底层支持,包括网络通信、加密和身份验证等。 最后,msutil.jar则包含了一些实用工具类,比如日期...
#### 三、JDBC简介 JDBC是一种由Java编写的API,旨在使Java程序能够执行SQL语句并与关系数据库进行交互。它由一系列类和接口组成,遵循统一的标准,允许开发者编写一次代码即可跨平台和跨数据库使用。 1. **目标**...