本书提供了JDBCTMAPI的权威教程与参考·~JDBCAPI技术支持使用JavaTM编程语言进行通用数据访问,该版本进行了更新和扩展,覆盖整个JDBC 3.0API的内容,包括。iava.sql包和易于构建服务器端应用程序的javax.sql包。
除了介绍JDBC 3.0 API规范外,本书还包含了更深层次的解释——从循序渐进的教程到每一个类和接口的全面参考。
对于那些学习Java技术的新手而言,本书还介绍了Java编程语言和SQL的基础知识。以此为起点,您将学习如何建立数据库、如何建立连接、如何从结果集中获取值以及如何使用准备语句,从而学会创建完整的JDBC应用程序。另外,本书提供了很多示例,也举例说明了执行通用任务的方法。然后,本书转向更高级的主题,集中介绍JDBC 3.0API的一些高级功能,如可滚动和可更新的结果集、批量更新、SQL99数据类型、定制映射、保存点、语句池以及自动生成键等。
除了深入介绍JDBC元数据API之外,本书还给出了行集的最新信息。行集技术支持以JavaBeansTM组件来处理数据集。此外,本书还介绍了JdbcRowSet、CachedRowSet、WebRowSet、JoinRowSet和FilteredRowSet对象的标准实现。
本书对JDBCAPI中的每个类和接口(从Array到XADataSource)都提供了简洁但完整的信息。每个类不但包含用例的概述,还包含方法和域的详尽解释。
文中有关SQL类型和Java编程语言中的类型之间的映射关系的章节、附录A、JDBC 2.0和3.0API中新特征的总结以及术语表,对所有数据库程序员来说都是必不可少的资源。
第一部分
第1章引言
1.1JDBC3.0API涵盖的内容
1.2本书约定
1.2.1使用图标指明新内容
1.2.2在对方法的解释中隐含对SQLException异常的解释
1.2.3某些方法解释的结合
1.3本书内容
1.3.1第一部分
1.3.2第二部分
1.3.3建议的阅读顺序
1.3.4按主题查找信息
1.3.5网上资源
1.4JDBCAPI概述
1.4.1JDBCAPI的功能
1.4.2作为其他API的基础
1.4.3JDBCAPI与ODBC的比较
1.4.4两层模型与三层模型
1.4.5SQL一致性
1.4.6基于JDBC技术的产品
1.4.7JDBC产品框架
1.4.8JDBC驱动程序类型
1.4.9获取JDBC驱动程序
1.4.10Java-关系DBMS
1.4.11其他产品
1.5JDBCAPI与Java平台
1.5.1JDBCAPI与J2SE平台
1.5.2JDBCAPI与J2EE平台
1.5.3JDBCAPI与J2ME平台
1.6Java概述
1.6.1Java是可移植的
1.6.2Java是面向对象的
1.6.3Java易于编写正确的代码
1.6.4Java包括类库和接口
1.6.5Java是可扩展的
1.6.6Java安全性强
1.6.7Java具有良好的性能
1.6.8Java可伸缩性强
1.6.9Java是多线程的
1.7关系数据库概述
1.7.1完整性规则
1.7.2SELECT语句
1.7.3WHERE子句
1.7.4连接
1:7.5常见的SQL命令
1.7.6结果集与游标
1.7.7事务
1.7.8存储过程
1.7.9元数据
第2章基本教程
2.1准备工作
2.2建立数据库
2.3建立连接
2.3.1加载驱动程序
2.3.2创建连接
2.4建立表
2.4.1创建表
2.4.2创建JDBC语句
2.4.3执行语句
2.4.4将数据输入表中
2.5从表中获取数据
2.6从结果集中检索值
2.6.1使用方法next
2.6.2获取列值
2.6.3使用方法getString
2.7更新表
2.8JDBC基础
2.9使用准备语句
2.9.1何时使用PreparedStatement对象
2.9.2创建PreparedStatement对象
2.9.3为PreparedStatement讨象的参数提供值
2.9.4使用循环宋设置值
2.9.5方法executeUpdate的返回值
2.10使用连接
2.11使用事务
2.11.1禁用自动提交模式
2.11.2提交事务
2.11.3使用事务来保持数据完整性
2.11.4何时回滚事务
2.12存储过程
2.12.1用于创建存储过程的SQL语句
2.12.2使用JDBCAPI调用存储过程
2.13创建完整的JDBC应用程序
2.13.1在类定义中放入代码
2.13.2通过导入类来使类可见
2.13.3使用main方法
2.13.4使用try和catch块
2.13.5获取异常
2.13.6获取警告
2.14运行示例应用程序
2.15示例代码
2.15.1示例代码1和示例代码2
2.15.2示例代码3和示例代码4
2.15.3示例代码5
2.15.4示例代码6
2.16通过应用程序创建applet
2.16.1编写applet代码
2.16.2运行applet
2.16.3示例代码7和示例代码8
2.17使用SQLJ和JDBCAPI的存储过程
2.17.1创建存储过程
2.17.2安装存储过程
2.17.3使用SQL声明存储过程
第3章高级教程
3.1使用JDBC2.0API和3.0API之前的准备工作
3.1.1运行代码之前的准备
3.1.2使用代码示例
3.2在可滚动结果集中移动游标
.3.2.1创建可滚动结果集
3.2.2向前和向后移动游标
3.2.3将游标移动到指定的行
3.2.4获取游标位置
3.3对可更新结果集进行更新
3.3.1创建可更新结果集
3.3.2以编程方式更新结果集
3.3.3以编程方式插入和删除行
3.3.4示例代码20
3.3.5以编程方式删除行
3.3.6了解结果集中的变化
3.3.7获取最新数据
3.4建立批量更新
3.4.1将Statement对象用于批量更新
3.4.2批量更新异常
3.4.3示例代码21
3.5SQL99数据类型
3.5.1DISTINCT类型
3.5.2使用SQL99数据类型
3.5.3Blob、Clob和Array对象
3.5.4创建SQL结构类型
3.5.5创建DISTINCT类型
3.5.6示例代码22
3.5.7使用指向结构类型的引用
3.5.8示例代码23
3.5.9将SQL99类型用作列值
3.5.10示例代码24
3.5.11将SQL99类型插入表中
3.5.12示例代码25
3.6使用定制映射
3.6.1实现SQLData
3.6.2使用连接的类型映射
3.6.3使用自己的类型映射
3.7使用DaraSource对象
3.7.1使用DataSource对象来获取连接
3.7.2部署基本的DataSource对象
3.7.3部署其他DataSource实现
3.7.4获取和使用池连接
3.7.5示例代码26
3.7.6分布式事务的部署
3.7.7将连接用于分布式事务
3.7.8示例代码27
3.8JDBC3.0功能
3.8.1使用保存点
3.8.2示例代码28.
3.8.3使用自动生成键
3.8.4示例代码29
第4章元数据教程
4.1使用ResultSetMetaDara对象
4.1.1使用方法getColumnCount
4.1.2示例代码9
4.1.3使用其他ResultSetMetaData方法
4.1.4获取列类型信息
4.1.5示例代码10和示例代码11
4.1.6示例代码12
4.1.7获取其他信息
4.1.8使用ResultSetMetaData特性
4.1.9获取其他信息
4.2使用DatabaseMetaData对象
4.2.1DatabaseMetaData方法的类别
4.2.2返回String的方法
4.2.3返回int的方法
4.2.4返回boolean的方法
4.2.5返回ResultSet对象的方法
4.2.6示例代码13
4.2.7获取与DBMS数据类型有关的信息
4.2.8示例代码14
4.2.9获取与主键和外键有关的信息
4.2.10示例代码15
4.2.11示例代码16
4.3在JDBC2.0核心API中添加的方法
4.3.1获取与ResultSet对象有关的信息
4.3.2获取其他信息
4.4在JDBC3.0API中添加的方法
4.5使用ParameterMetaData对象
4.6通用应用程序
4.6.1示例代码17和18
4.6.2示例代码19
第5章行集教程
5.1行集的类型与用法
5.2使用行集
5.2.1创建行集和设置属性
5.2.2行集和事件通知
5.2.3获取可滚动和可更新行集
5.2.4将行集用于滚动和更新
5.2.5更新行集
5.3EJB示例
5.3.1分布式应用程序
5.3.2行集的差别
5.3.3EJB和分布式事务
5.3.4无状态SessionBean对象
5.3.5EJB应用程序概述
5.3.6remote接口
5.3.7home接口
5.3.8客户类
5.3.9企业bean
第二部分
第6章Array
6.1Anay概述
6.1.1创建Array对象
6.1.2获取基类型信息
6.1.3物化Array数据
6.1.4getArray方法的四个版本
6.1.5getResultSet方法的四个版本
6.1.6使用Array方法
6.1.7存储Array对象
6.2Anay接口定义
6.3Anay方法
第7章BactChUpdateException
7.1BatchUpdateExceptiUon概述
7.1.1BatchUpdateException对象包含的内容
7.1.2检索BatchUpdateException信息
7.2BatChUpdateException类的定义
7.3BatchUpdateException构造函数
7.4BatchUpdateExceptiOn方法
7.4.1继承的方法
7.4.2BatchUpdateException中定义的方法
第8章BIob
8.1Blob概述
8.1.1创建Blob对象
8.1.2物化Blob数据
8.1.3存储Blob值
8.1.4发现Blob对象中的模式
8.1.5修改Blob对象的方法
8.1.6定位器和更新
8.2Blob接口定义
8.3B10b方法
第9章CaIIab.eStatement
9.1CallableStatement概述
9.1.1创建CallableStatement对象
9.1.2命名参数
9.1.31N参数
9.1.4设置批量更新
9.1.5OUT参数
9.1.6参数的编号
9.1.71NOUT参数
9.1.8在获取结果之后获取OUT参数
9.1.9获取NULL值作为OUT参数
9.1.10获取参数信息
9.2CallableStatement定义
9.3CallableStatement方法
9.3.1继承的方法和域
9.3.2CallableStatement中定义的方法
第10章CIob
10.1Clob概述
10.1.1创建Clob对象
10.1.2物化Clob数据
10.i.3存储Clob对象
10.1.4更新Clob对象
10.1.5定位器和更新
10.2Clob接口定义
10.3C10b方法
第11章ConneCtiOn
11.1Connection概述
11.1.1打开连接
11.1.2URL的一般用法
11.1.3JDBCURL
11.1.4odbc子协议
11.1.5注册子协议
11.1.6发送SQL语句
11.1.7事务
11.1.8事务隔离级别
11.1.9使用保存点
11.1.10释放DBMS资源
11.1.11使用类型映射
11.2ConnectiOn接口定义
11.3Connection方法
11.4ConnectiOn域
第12章ConneCtiOnEyent
12.1ConnectionEvent概述
12.2ConnectiOnEvent接口定义
12.3ConnectionEvent构造函数
12.4ConnectiOnEvent方法
12.4.1从java.mil.EventObject中继承的方法
12.4.2javax.sql.ConnectionEvent中定义的方法
第13章ConnectionEventListener.
13.1ConnectionEventListener概述
13.1.1事件通知方法
13.1.2注册ConnectionEventListener对象
13.2ConnectionEventLiStener接口定义
13.3ConneCtiOnEventLiStener方法
第14章ConnactionPoo.DataSource
14.1ConnectionPoolDataSource概述
14.1.1ConnectiOn对象和P001edConnectiOn对象
14.1.2重用语句
14.1.3连接池和语句池的属性
14.1.4关闭池中语句
14.2ConnectionPoolDataSource接口定义
14.3ConnectionP001DataSource方法
第15章DatabaseMetaData
15.1DatabaseMetaData概述
15.1.1创建DatabaseMetaData对象
15.1.2作为返回值的ResultSet对象
15.1.3作为参数的字符串模式
15.1.4伪数据列
15.1.5JDBC2.0核心API中增加的特征
15.1.6获取高级类型信息
15.1.7JDBC3.0An中增加的方法和属性域
15.1.8JDBC3.0APl中修改的方法
15.2DatabaseMetaData接口定义+
15.3DatabaseMetaData方法
15.4DatabaseMetaData域
第16章DataSource
16.1DataSource概述
16.1.1属性
16.1.2使用JNDI
16.1.3创建和注册DataSource对象
16.1.4连接到数据源
’16.1.5DataSource实现
16.1.6日志和追踪
16.1.7使用INDI的优点
16.2DataSource接口定义
16.3DataSource方法
第17章DataTruncation
17.1DataTmncatiOn概述
17.1.1没有警告或异常的数据截短
17.1.2读数据时的数据截短
17.1.3写数据时的数据截短
17.1.4DataTruncation对象所包含的信息
17.1.5获取DataTruncatiOn信息
17.2DataTruncatiOn类的定义
17.3DataTFI.1aCatiOn构造函数
17.4DataTruncatiOn方法
17.4.1继承的方法
17.4.2DataTmncation中定义的方法
第18章Date
18.1Date概述
18.1.1创建Date对象
18.1.2不推荐使用的方法
18.1.3获取Date对象
18.1.4高级特征
18.2Date类的定义
18.3Date构造函数
18.4Date方法
第19章Distinct类型
19.1Distinct类型概述
19.1.1创建Distinct类型对象
19.1.2存储Distinct对象
19.1.3使用Distinet数据类型
19.1.4Distinct类型的定制映射
第20章Driver
20.1Driver概述
20.1.1加载和注册驱动程序
20.1.2mBC可选实现
20.2Driver接口定义
20.3Driver方法
第21章DriverManager-
21.1DriverManager概述
21.1.1跟踪可用驱动程序
21.1.2建立连接
21.1.3DdverManager的方法是静态的
21.2DriverManager类的定义
21.3DriverManager方法
第22章DriverPropertylnfO
22.1DriverPropertylnfO概述
22.1.1创建DriverPropedylnfo对象
22.1.2获取和设置属性域
22.2DriverPropertylnfo类的定义
22.3DriverPropertylnfo构造函数
22.4DriverPropertylnfO域
第23章ParameterMetaData
23.1ParameterMetadata概述
23.1.1创建ParameterMetaData对象
23.1.2从ParameterMetaData对象中获取信息
23.1.3慎重使用参数元数据
23.2ParameterMetaData接口定义
23.3ParameterMetaData方法
23.4ParameterMetaDara域
第24章P001edConneCtion
24.1PooledConnection概述
24.1.1连接池的应用程序代码
24.1.2连接池的工作原理
24.1.3PooledConnectiOn对象的生命周期
24.2PooledConnection接口定义
24.3P001edConnection方法
第25章PreparedStatement
25.1PreparedStatement概述
25.1.1创建PreparedStmemem对象
25.1.2传递IN参数
25.1.3参数元数据
25.1.4m参数数据类型的一致性
25.1.5使用setObject
25.1.6发送JDBCNULL作为IN参数
25.1.7发送非常大的IN参数
25.1.8在批量更新中使用PreparedStmemem对象
25.1.9准备语句入池
25.2PreparedStatement接口定义
25.3PreparedStatement方法
第26章Ref
26.1Ref概述
26.1.1创建SQL引用
26.1.2创建Ref对象
26.1.3存储Ref对象
26.1.4解除Ref对象引用
26.1.5示例代码30
26.1.6修改Ref对象
26.2Ref接口定义
26.3Ref方法
第27章ResultSet
27.1ResultSet概述
27.1.1数据行和数据列
27.1.2游标
27.1.3游标移动示例
27.1.4确定结果集中数据行的数目
27.1.5获取数据列的数值
27.1.6使用哪种方法获取数据
27.1.7使用getObject方法
27.1.8结果集的类型
27.1.9并发类型
27.1.10结果集的可保持性
27.1.11提供性能提示
27.1.12创建不同类型的结果集
27.1.13使用准备语句创建结果集
27.1.14请求一些并不支持的特征
27.1.15更新数据列的值
27.1.16删除数据行
27.1.17插入数据行
27.1.18定位更新
27.1.19产生可更新结果集的查询语句
27.1.20对事务可见的变化
27.1.21通过其他事务或同一事务中的其他对象所作变化的可见性
27.1.22结果集自身变化的可见性
27.1.23检测变化
27.1.24重新读取一个数据行
27.1.25对非常大的数据行值使用流
27.1.26Null结果值
27.1.27可选或多个结果集
27.1.28关闭ResultSet对象
27.1.29JDBC兼容
27.2ResnltSet接口定义
27.3ResultSet方法
27.4ResultSet域
第28章Resu.tSetMetadata
28.1ResultSetMetaData概述
28.1.1创建ResultSetMetaData对象
28.1.2使用ResultSetMetaData
28.2ReSUltSetMetaData接口定义
28.3ResultSetMetaData方法
28.4ResultSetMetaData域
第29章RowSet
29.1ROWSet概述
29.1.1行集的事件模型
29.1.2RowSet属性
29.1.3设置命令字符串的参数
29.1.4移动RowSet对象
29.1.5执行命令
29.1.6使用RowSet对象的元数据
29.2标准实现
29.2.1JdbcRowSet实现概述
29.2.2CachedRowSet实现概述
29.2.3使用CachedRowSet对象
29.2.4创建CachedRowSetlmpl对象
29.2.5填充CachedRowSet对象
29.2.6访问数据
29.2.7修改数据
29.2.8定制Reader和Writer
29.2.9其他方法
29.2.10WebRowSet的实现
29.2.11FilteredRowSet实现
29.2.12JoinRowSet实现
29.3RowSet接口定义
29.4ROWSet方法
29.5ROWSet域
第30章ROWSetEvent
30.1ROWSetEvent概述
30.1.1RowSet事件
30.1.2创建RowSetEvent对象
30.2RowSetEvent接口定义
30.3ROWSetEvent构造函数
30.4ROWSetEvent方法
第31章RowSet.nterna卜
31.1ROWSetInternal概述
31.2ROWSetInternal接口定义
31.3ROWSetInternal方法
第32章ROWSetLiStener
32.1ROWSetLiStener概述
32.1.1注册和注销侦听器
32.1.2使用RowSetListener方法
32.2RowSetLi“ener接口定义
32.3ROWSetLiStener方法
第33章RowSetMetaData
33.1ROWSetMetaData概述
33.2ROWSetMetaData接口定义
33.3ROWSetMetaData方法
33.4ROWSetMetaData域
第34章ROWSetReader
34.1ROWSetReader概述
34.1.1Reader/Wrner架构
34.1.2从未连接的行集中读取数据
34.2RowSetReader接口定义
34.3ROWSetReader方法
第35章ROWSetW门ter
35.1ROWSetWr讧er概述
35.2RowSetWriter接口定义
35.3ROWSetWrher方法
第36章SavepOint
36.1Savepoint概述
36.1.1创建Savepoint对象:
36.1.2使用Savepoint对象
36.1.3删除Savepoint对象
36.1.4获取Savepoim对象标识符
36.2Savepoint接口定义
36.3Savepoint方法
第37章SQLData
37.1SQLData概述
37.1.1创建定制映射
37.1.2获取定制映射对象
37.1.3存储具有定制映射的对象
37.2SQLData接口定义
37.3SQLData方法
第38章SQLException
38.1SQLException概述
38.1.1SQLException对象
38.1.2获取SQLException信息
38.1.3SQLException
38.2SQLException类定义
38.3SQLException构造函数
38.4SQLException方法
第39章SQLInput
39.1SQLInput概述
39.1.1创建SQLInput对象
39.1.2使用reader方法
39.2SQLInput接口定义
39.3SQLInput方法
第40章SQLOutput
40.1SQLOutput概述
40.2SQLOutput接口定义
40.3SQLOutput方法
第41章SQLPermiSSion
41.1SQLPermissiOn概述
41.2SQLPermission类定义
41.3SQLPermission构造函数”
第42章SQLWarning
42.1SQLWaming概述
42.1.1SQLWaming对象
42.1.2获取SQLWarning信息
42.2SQLWaming类定义
42.3SQLWaming构造函数
42.4SQLWarbing方法
第43章Statement
43.1Statemem概述
43.1.1创建Statement对象
43.1.2使用Statement对象执行语句
43.1.3语句的完成
43.1.4读取自动生成键
43.1.5关闭语句
43.1.6语句中的SQL转义语法
43.1.7发送批量更新
43.1.8给出性能提示
43.1.9执行特殊类型的语句
43.2Stmement接口定义
43.3Statement方法
43.4Stmemem域
第44章Struct
44.1Struct概述
44.1.1定制映射
44.1.2创建SQL结构类型
44.1.3存储结构类型的实例
44.1.4创建Struct对象
44.1.5映射SQL继承性
44.1.6属性的排列顺序
44.1.7存储Struct对象
44.2Struct接口定义
44.3Struct方法
第45章Time
45.1Time概述
45.1.1创建Time对象
45.1.2不推荐使用的方法
45.1.3获取Time对象
45.1.4高级特性
45.2Time类定义
45.3Time构造函数
45.4Time方法
第46章Timestamp
46.1Timestamp概述
4&1.1创建Timestamp对象
46.1.2获取Timestamp对象
46.1.3高级特性
46.2Timestamp类定义
46.3Timestamp构造函数
46.4Timestamp方法
第47章Types
47.1Types类概述
47.1.1使用Types类中的常量
47.1.2使用常量OTHER
47.1.3JDBC2.0核心APl中添加的JDBC类型
47.1.4JDBC3.0API中添加的JDBC数据类型
47.2Types类定义
第48章XAConnection
48.1XAConnectiOn概述
48.1.1分布式事务中的应用程序代码
48.1.2分布式事务的需求
48.1.3创建XAConnection对象
48.1.4XAResource对象所做的工作
48.1.5两阶段提交模式的工作方式
48.1.6使用XAResource对象提交事务
48.1.7XAResource接口
48.1.8分布式事务的执行步骤
48.1.9分布式事务和EJB
48.2XAConnectiOn接口定义
48.3XACOnnectiOn方法
第49章XADataSOUrCe、一:
49.1XADataSOurCe概述
49.1.1获取XADataSOurce对象
49.1.2XADataSource对象和资源管理器
49.2XADataSOurce接口定义
49.3XADataSOurce方法
第50章SQL类型与Java类型之间的映射
50.1映射概述
50.2将SQL类型映射为Java类型
50.3基本的JDBC类型
50.3.1CHAR、VARCHAR和LONGVARCHAR
50.3.2BmARY、VARBmARY和LONGVARBINARY
50.3.3BIT
50.3.4TINYINT
50.3.5SMALLmT
50.3.6mTEGER
50.3.7BIGINT
50.3.8REAL
50.3.9DOUBLE
50.3.10FLOAT
50.3.11DECIMAL和NUMEmC
50.3.12DATE、TIME和TIMESTAMP
50.4高级JDBC数据类型
50.4.1BLOB
50.4.2CLOB
50.4.3ARRAY
50.4.4DISTINCT
50.4.5STRUCT
50.4.6REF
50.4.7JAVA——OBJECT
50.5了DBC3.0API中添加的JDBC类型
50.5.1BOOLEAN
50.5.2DATALINK
50.6映射示例
50.6.1简单SQL语句
50.6.2带有IN参数的SQL语句
50.6.3带有INOUT参数的SQL语句
50.7定制映射
50.8动态数据访问
50.9在数据库中存储Java对象
50.10类型映射表
50.10.1映射到Java类型的JDBC类型
50.10.2映射到JDBC类型的Java类型
50.10.3映射到JavaObject类型的JDBC类型
50.10.4映射到JDBC类型的JavaObiect类型
50.10.5setObject方法所做的类型转换
50.10.6ResultSet获取方法执行的类型转换
50.107映射到特定数据库SQL类型的JDBC类型
附录A写给驱动程序开发人员
附录BJDBCAP.的演变
术语表