JDBC API Description
package java.sql description
What the JDBCTM 4.2 API Includes
Versions
What the
java.sql
Package Contains- Making a connection with a database via the
DriverManager
facility - Sending SQL statements to a database
- Retrieving and updating the results of a query
- Standard mappings for SQL types to classes and interfaces in the Java programming language
- Custom mapping an SQL user-defined type (UDT) to a class in the Java programming language
- Metadata
- Exceptions
- Making a connection with a database via the
java.sql
andjavax.sql
Features Introduced in the JDBC 4.2 APIjava.sql
andjavax.sql
Features Introduced in the JDBC 4.1 APIjava.sql
andjavax.sql
Features Introduced in the JDBC 4.0 APIjava.sql
andjavax.sql
Features Introduced in the JDBC 3.0 APIjava.sql
Features Introduced in the JDBC 2.1 Core APIjavax.sql
Features Introduced in the JDBC 2.0 Optional Package APICustom Mapping of UDTs
Package javax.sql Description
Using a
DataSource
Object to Make a ConnectionConnection Pooling and Statement Pooling
Distributed Transactions
Rowsets
- Event Notification
- Metadata
- The Reader/Writer Facility
Package java.sql Description
javax.sql.RowSet
group of interfaces, can be customized to use and update data from a spread sheet, flat file, or any other tabular data source.
What the JDBCTM 4.2 API Includes
The JDBCTM 4.2 API includes both the java.sql
package, referred to as the JDBC core API, and the javax.sql
package, referred to as the JDBC Optional Package API. This complete JDBC API is included in the JavaTM Standard Edition (Java SETM), version 7. The javax.sql
package extends the functionality of the JDBC API from a client-side API to a server-side API, and it is an essential part of the JavaTM Enterprise Edition (Java EETM) technology.
Versions
The JDBC 4.2 API incorporates all of the previous JDBC API versions:
- The JDBC 4.1 API
- The JDBC 4.0 API
- The JDBC 3.0 API
- The JDBC 2.1 core API
- The JDBC 2.0 Optional Package API
(Note that the JDBC 2.1 core API and the JDBC 2.0 Optional Package API together are referred to as the JDBC 2.0 API.) - The JDBC 1.2 API
- The JDBC 1.0 API
Classes, interfaces, methods, fields, constructors, and exceptions have the following "since" tags that indicate when they were introduced into the Java platform. When these "since" tags are used in JavadocTM comments for the JDBC API, they indicate the following:
- Since 1.8 -- new in the JDBC 4.2 API and part of the Java SE platform, version 8
- Since 1.7 -- new in the JDBC 4.1 API and part of the Java SE platform, version 7
- Since 1.6 -- new in the JDBC 4.0 API and part of the Java SE platform, version 6
- Since 1.4 -- new in the JDBC 3.0 API and part of the J2SE platform, version 1.4
- Since 1.2 -- new in the JDBC 2.0 API and part of the J2SE platform, version 1.2
- Since 1.1 or no "since" tag -- in the original JDBC 1.0 API and part of the JDKTM, version 1.1
NOTE: Many of the new features are optional; consequently, there is some variation in drivers and the features they support. Always check your driver's documentation to see whether it supports a feature before you try to use it.
NOTE: The class SQLPermission
was added in the JavaTM 2 SDK, Standard Edition, version 1.3 release. This class is used to prevent unauthorized access to the logging stream associated with the DriverManager
, which may contain information such as table names, column data, and so on.
What the java.sql
Package Contains
The java.sql
package contains API for the following:
- Making a connection with a database via the
DriverManager
facilityDriverManager
class -- makes a connection with a driverSQLPermission
class -- provides permission when code running within a Security Manager, such as an applet, attempts to set up a logging stream through theDriverManager
Driver
interface -- provides the API for registering and connecting drivers based on JDBC technology ("JDBC drivers"); generally used only by theDriverManager
classDriverPropertyInfo
class -- provides properties for a JDBC driver; not used by the general user
- Sending SQL statements to a database
Statement
-- used to send basic SQL statementsPreparedStatement
-- used to send prepared statements or basic SQL statements (derived fromStatement
)CallableStatement
-- used to call database stored procedures (derived fromPreparedStatement
)Connection
interface -- provides methods for creating statements and managing connections and their propertiesSavepoint
-- provides savepoints in a transaction
- Retrieving and updating the results of a query
ResultSet
interface
- Standard mappings for SQL types to classes and interfaces in the Java programming language
Array
interface -- mapping for SQLARRAY
Blob
interface -- mapping for SQLBLOB
Clob
interface -- mapping for SQLCLOB
Date
class -- mapping for SQLDATE
NClob
interface -- mapping for SQLNCLOB
Ref
interface -- mapping for SQLREF
RowId
interface -- mapping for SQLROWID
Struct
interface -- mapping for SQLSTRUCT
SQLXML
interface -- mapping for SQLXML
Time
class -- mapping for SQLTIME
Timestamp
class -- mapping for SQLTIMESTAMP
Types
class -- provides constants for SQL types
- Custom mapping an SQL user-defined type (UDT) to a class in the Java programming language
SQLData
interface -- specifies the mapping of a UDT to an instance of this classSQLInput
interface -- provides methods for reading UDT attributes from a streamSQLOutput
interface -- provides methods for writing UDT attributes back to a stream
- Metadata
DatabaseMetaData
interface -- provides information about the databaseResultSetMetaData
interface -- provides information about the columns of aResultSet
objectParameterMetaData
interface -- provides information about the parameters toPreparedStatement
commands
- Exceptions
SQLException
-- thrown by most methods when there is a problem accessing data and by some methods for other reasonsSQLWarning
-- thrown to indicate a warningDataTruncation
-- thrown to indicate that data may have been truncatedBatchUpdateException
-- thrown to indicate that not all commands in a batch update executed successfully
java.sql
and javax.sql
Features Introduced in the JDBC 4.2 API
- Added
JDBCType
enum andSQLType
interface - Support for
REF CURSORS
inCallableStatement
DatabaseMetaData
methods to return maximum Logical LOB size and if Ref Cursors are supported- Added support for large update counts
java.sql
and javax.sql
Features Introduced in the JDBC 4.1 API
- Allow
Connection
,ResultSet
andStatement
objects to be used with the try-with-resources statement - Supported added to
CallableStatement
andResultSet
to specify the Java type to convert to via thegetObject
method DatabaseMetaData
methods to return PseudoColumns and if a generated key is always returned- Added support to
Connection
to specify a database schema, abort and timeout a physical connection. - Added support to close a
Statement
object when its dependent objects have been closed - Support for obtaining the parent logger for a
Driver
,DataSource
,ConnectionPoolDataSource
andXADataSource
java.sql
and javax.sql
Features Introduced in the JDBC 4.0 API
- auto java.sql.Driver discovery -- no longer need to load a
java.sql.Driver
class viaClass.forName
- National Character Set support added
- Support added for the SQL:2003 XML data type
- SQLException enhancements -- Added support for cause chaining; New SQLExceptions added for common SQLState class value codes
- Enhanced Blob/Clob functionality -- Support provided to create and free a Blob/Clob instance as well as additional methods added to improve accessibility
- Support added for accessing a SQL ROWID
- Support added to allow a JDBC application to access an instance of a JDBC resource that has been wrapped by a vendor, usually in an application server or connection pooling environment.
- Availability to be notified when a
PreparedStatement
that is associated with aPooledConnection
has been closed or the driver determines is invalid
java.sql
and javax.sql
Features Introduced in the JDBC 3.0 API
- Pooled statements -- reuse of statements associated with a pooled connection
- Savepoints -- allow a transaction to be rolled back to a designated savepoint
- Properties defined for
ConnectionPoolDataSource
-- specify how connections are to be pooled - Metadata for parameters of a
PreparedStatement
object - Ability to retrieve values from automatically generated columns
- Ability to have multiple
ResultSet
objects returned fromCallableStatement
objects open at the same time - Ability to identify parameters to
CallableStatement
objects by name as well as by index ResultSet
holdability -- ability to specify whether cursors should be held open or closed at the end of a transaction- Ability to retrieve and update the SQL structured type instance that a
Ref
object references - Ability to programmatically update
BLOB
,CLOB
,ARRAY
, andREF
values. - Addition of the
java.sql.Types.DATALINK
data type -- allows JDBC drivers access to objects stored outside a data source - Addition of metadata for retrieving SQL type hierarchies
java.sql
Features Introduced in the JDBC 2.1 Core API
- Scrollable result sets--using new methods in the
ResultSet
interface that allow the cursor to be moved to a particular row or to a position relative to its current position - Batch updates
- Programmatic updates--using
ResultSet
updater methods - New data types--interfaces mapping the SQL3 data types
- Custom mapping of user-defined types (UDTs)
- Miscellaneous features, including performance hints, the use of character streams, full precision for
java.math.BigDecimal
values, additional security, and support for time zones in date, time, and timestamp values.
javax.sql
Features Introduced in the JDBC 2.0 Optional Package API
- The
DataSource
interface as a means of making a connection. The Java Naming and Directory InterfaceTM (JNDI) is used for registering aDataSource
object with a naming service and also for retrieving it. - Pooled connections -- allowing connections to be used and reused
- Distributed transactions -- allowing a transaction to span diverse DBMS servers
RowSet
technology -- providing a convenient means of handling and passing data
Custom Mapping of UDTs
A user-defined type (UDT) defined in SQL can be mapped to a class in the Java programming language. An SQL structured type or an SQL DISTINCT
type are the UDTs that may be custom mapped. The following three steps set up a custom mapping:
- Defining the SQL structured type or
DISTINCT
type in SQL - Defining the class in the Java programming language to which the SQL UDT will be mapped. This class must implement the
SQLData
interface. - Making an entry in a
Connection
object's type map that contains two things:- the fully-qualified SQL name of the UDT
- the
Class
object for the class that implements theSQLData
interface
When these are in place for a UDT, calling the methods ResultSet.getObject
or CallableStatement.getObject
on that UDT will automatically retrieve the custom mapping for it. Also, thePreparedStatement.setObject
method will automatically map the object back to its SQL type to store it in the data source.
Package javax.sql Description
java.sql
package and, as of the version 1.4 release, is included in the Java Platform, Standard Edition (Java SETM). It remains an essential part of the Java Platform, Enterprise Edition (Java EETM).
The javax.sql
package provides for the following:
- The
DataSource
interface as an alternative to theDriverManager
for establishing a connection with a data source - Connection pooling and Statement pooling
- Distributed transactions
- Rowsets
Applications use the DataSource
and RowSet
APIs directly, but the connection pooling and distributed transaction APIs are used internally by the middle-tier infrastructure.
Using a DataSource
Object to Make a Connection
The javax.sql
package provides the preferred way to make a connection with a data source. The DriverManager
class, the original mechanism, is still valid, and code using it will continue to run. However, the newer DataSource
mechanism is preferred because it offers many advantages over the DriverManager
mechanism.
These are the main advantages of using a DataSource
object to make a connection:
- Changes can be made to a data source's properties, which means that it is not necessary to make changes in application code when something about the data source or driver changes.
- Connection and Statement pooling and distributed transactions are available through a
DataSource
object that is implemented to work with the middle-tier infrastructure. Connections made through theDriverManager
do not have connection and statement pooling or distributed transaction capabilities.
Driver vendors provide DataSource
implementations. A particular DataSource
object represents a particular physical data source, and each connection the DataSource
object creates is a connection to that physical data source.
A logical name for the data source is registered with a naming service that uses the Java Naming and Directory InterfaceTM (JNDI) API, usually by a system administrator or someone performing the duties of a system administrator. An application can retrieve the DataSource
object it wants by doing a lookup on the logical name that has been registered for it. The application can then use the DataSource
object to create a connection to the physical data source it represents.
A DataSource
object can be implemented to work with the middle tier infrastructure so that the connections it produces will be pooled for reuse. An application that uses such a DataSource
implementation will automatically get a connection that participates in connection pooling. A DataSource
object can also be implemented to work with the middle tier infrastructure so that the connections it produces can be used for distributed transactions without any special coding.
Connection Pooling and Statement Pooling
Connections made via a DataSource
object that is implemented to work with a middle tier connection pool manager will participate in connection pooling. This can improve performance dramatically because creating new connections is very expensive. Connection pooling allows a connection to be used and reused, thus cutting down substantially on the number of new connections that need to be created.
Connection pooling is totally transparent. It is done automatically in the middle tier of a Java EE configuration, so from an application's viewpoint, no change in code is required. An application simply uses the DataSource.getConnection
method to get the pooled connection and uses it the same way it uses any Connection
object.
The classes and interfaces used for connection pooling are:
ConnectionPoolDataSource
PooledConnection
ConnectionEvent
ConnectionEventListener
StatementEvent
StatementEventListener
The connection pool manager, a facility in the middle tier of a three-tier architecture, uses these classes and interfaces behind the scenes. When a ConnectionPoolDataSource
object is called on to create a PooledConnection
object, the connection pool manager will register as a ConnectionEventListener
object with the new PooledConnection
object. When the connection is closed or there is an error, the connection pool manager (being a listener) gets a notification that includes a ConnectionEvent
object.
If the connection pool manager supports Statement
pooling, for PreparedStatements
, which can be determined by invoking the method DatabaseMetaData.supportsStatementPooling
, the connection pool manager will register as a StatementEventListener
object with the new PooledConnection
object. When the PreparedStatement
is closed or there is an error, the connection pool manager (being a listener) gets a notification that includes a StatementEvent
object.
Distributed Transactions
As with pooled connections, connections made via a DataSource
object that is implemented to work with the middle tier infrastructure may participate in distributed transactions. This gives an application the ability to involve data sources on multiple servers in a single transaction.
The classes and interfaces used for distributed transactions are:
XADataSource
XAConnection
These interfaces are used by the transaction manager; an application does not use them directly.
The XAConnection
interface is derived from the PooledConnection
interface, so what applies to a pooled connection also applies to a connection that is part of a distributed transaction. A transaction manager in the middle tier handles everything transparently. The only change in application code is that an application cannot do anything that would interfere with the transaction manager's handling of the transaction. Specifically, an application cannot call the methods Connection.commit
or Connection.rollback
, and it cannot set the connection to be in auto-commit mode (that is, it cannot call Connection.setAutoCommit(true)
).
An application does not need to do anything special to participate in a distributed transaction. It simply creates connections to the data sources it wants to use via theDataSource.getConnection
method, just as it normally does. The transaction manager manages the transaction behind the scenes. The XADataSource
interface creates XAConnection
objects, and each XAConnection
object creates an XAResource
object that the transaction manager uses to manage the connection.
Rowsets
The RowSet
interface works with various other classes and interfaces behind the scenes. These can be grouped into three categories.
- Event Notification
RowSetListener
ARowSet
object is a JavaBeansTM component because it has properties and participates in the JavaBeans event notification mechanism. TheRowSetListener
interface is implemented by a component that wants to be notified about events that occur to a particularRowSet
object. Such a component registers itself as a listener with a rowset via theRowSet.addRowSetListener
method.When the
RowSet
object changes one of its rows, changes all of it rows, or moves its cursor, it also notifies each listener that is registered with it. The listener reacts by carrying out its implementation of the notification method called on it.RowSetEvent
As part of its internal notification process, aRowSet
object creates an instance ofRowSetEvent
and passes it to the listener. The listener can use thisRowSetEvent
object to find out which rowset had the event.
- Metadata
RowSetMetaData
This interface, derived from theResultSetMetaData
interface, provides information about the columns in aRowSet
object. An application can useRowSetMetaData
methods to find out how many columns the rowset contains and what kind of data each column can contain.The
RowSetMetaData
interface provides methods for setting the information about columns, but an application would not normally use these methods. When an application calls theRowSet
methodexecute
, theRowSet
object will contain a new set of rows, and itsRowSetMetaData
object will have been internally updated to contain information about the new columns.
- The Reader/Writer Facility
ARowSet
object that implements theRowSetInternal
interface can call on theRowSetReader
object associated with it to populate itself with data. It can also call on theRowSetWriter
object associated with it to write any changes to its rows back to the data source from which it originally got the rows. A rowset that remains connected to its data source does not need to use a reader and writer because it can simply operate on the data source directly.RowSetInternal
By implementing theRowSetInternal
interface, aRowSet
object gets access to its internal state and is able to call on its reader and writer. A rowset keeps track of the values in its current rows and of the values that immediately preceded the current ones, referred to as the original values. A rowset also keeps track of (1) the parameters that have been set for its command and (2) the connection that was passed to it, if any. A rowset uses theRowSetInternal
methods behind the scenes to get access to this information. An application does not normally invoke these methods directly.RowSetReader
A disconnectedRowSet
object that has implemented theRowSetInternal
interface can call on its reader (theRowSetReader
object associated with it) to populate it with data. When an application calls theRowSet.execute
method, that method calls on the rowset's reader to do much of the work. Implementations can vary widely, but generally a reader makes a connection to the data source, reads data from the data source and populates the rowset with it, and closes the connection. A reader may also update theRowSetMetaData
object for its rowset. The rowset's internal state is also updated, either by the reader or directly by the methodRowSet.execute
.RowSetWriter
A disconnectedRowSet
object that has implemented theRowSetInternal
interface can call on its writer (theRowSetWriter
object associated with it) to write changes back to the underlying data source. Implementations may vary widely, but generally, a writer will do the following:- Make a connection to the data source
- Check to see whether there is a conflict, that is, whether a value that has been changed in the rowset has also been changed in the data source
- Write the new values to the data source if there is no conflict
- Close the connection
The RowSet
interface may be implemented in any number of ways, and anyone may write an implementation. Developers are encouraged to use their imaginations in coming up with new ways to use rowsets.
IMPORTANT NOTE: Code that uses API marked "Since 1.6" must be run using a JDBC technology driver that implements the JDBC 4.0 API. You must check your driver documentation to be sure that it implements the particular features you want to use.
JDBC API Description的更多相关文章
- JavaWeb学习之JDBC API中常用的接口和类
JDBC API中包含四个常用的接口和一个类分别是: 1.Connection接口 2.Statement接口 3.PreparedStatement接口 4.ResultSet接口 5.Driver ...
- JDBC API 事务的实践
使用了持久化框架几乎没有使用过原生的jdbc API ,发现原来使用jdbc API来实现事务也是很简单的. 数据库的链接connection具有一个属性autocommit,这个属性默认是true, ...
- JDBC API访问数据库的基本步骤。
JDBC本质:官方定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商实现这个接口,提供数据库驱动jar包. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类. 任 ...
- Spring中的JDBC API
1 JdbcTemplate的诞生 JDBC作为Java平台访问关系数据库的标准API,其成功是有目共睹的.为了避免在JDBC API在使用中的种种尴尬局面(几乎程式一样的代码,繁琐的异常处理),Sp ...
- JDBC API阐述
JDBC API JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果. Driver 接口 Java.sql.Driver 接口是所有 JDBC 驱动 ...
- JDBC API 可滚动可编辑的结果集
JDBC的API中的链接数据和创建statement并且执行读取ResultSet大家已经很熟悉了,这边介绍设置statement的属性使结果集可以移动并且进行编辑同步回数据库. Statement ...
- JDBC Api详解
一.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...
- 数据库程序接口——JDBC——API解读第一篇——建立连接的核心对象
结构图 核心对象 Driver Java通过Driver接口表示驱动,每种类型的数据库通过实现Driver接口提供自己的Driver实现类. Driver由属性,操作,事件三部分组成. 属性 公共属性 ...
- JDBC API浅析
使用java开发数据库应用程序一般都需要用到四个接口:Driver.Connection.Statement.ResultSet 1.Driver接口用于加载驱动程序 2.Connection接口用于 ...
随机推荐
- VirtualBox安装Debian6的方法和步骤(详细)
下面是用VirtualBox安装Debian6的方法和步骤 l 新建一个文件夹,用于存放虚拟硬盘,如Debian l 打开VirtualBox,点击新建 l 输入虚拟机名称,Debian_6 l 给虚 ...
- 韩顺平_linux_随堂笔记
这还是自己3年前(2011年)整理的笔记,记得当时那会儿自己对Linux还特别的憧憬,也很喜欢韩老师的讲课风格,边看边做笔记乐此不彼,现在开通了技术博客,所以把当年的笔记也放上来和大家分享.同时推荐没 ...
- 关于一道PHP面试题的解法
参照一个int型数组,如int[] a1=new int[]{10,9,10,20,15,3,9,8,7,1,1},编写一个方法,要求输出不重复,且降序的拼接字符串(连接字符用逗号),如上数组,输出的 ...
- Game中的状态机
我相信大多数博友都会玩游戏. 玩游戏,牵涉到状态包含 登陆,正常,死亡,复活,下线, 在上面状态的基础上.同时包含 站立,走动,跑动,不可移动施法状态, 战斗状态, 通常这是三个不同的分组.也就说可以 ...
- C# 异步操作 async await
在编程的过程中,我们会遇到很多需要异步操作的场景.比如要下载一个文件,如果使用同步的方式进行下载,那么UI操作就会被卡住,这时最好能够使用异步的方式进行下载.在C#中,很早就开始支持异步的操作了,只不 ...
- virtualbox 虚拟机Ubuntu 传文件-共享
- spring Mvc + Mybatis 中使用junit
在Spring Mvc + Mybatis的项目中我们有时候需要在测试代码中注入Dao操作数据库,对表进行增删改查,实现如下: 这是一般的maven项目项目结构 测试代码一般写在src/test/ja ...
- linux下安装mysql
下载Mysql包 因为mysql比较大,我们不能像安装nginx和php那样,通过下载源码,编译成二进制安装.mysql安装比php和nginx稍微麻烦一点. 这里mysql我们直接下载编译好的二进制 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】六.二次开发导出数据驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 导出数据接口的作用 在数据集成系统项目中,要么是自已集成其他厂家的设备,要么是其他厂家集成自己 ...
- UML简单例子
平时最常用到的UML图包括:用例图.类图.序列图.状态图. 用例图 主要是描述系统具有的一个功能单元.通常包含角色和用例.角色通常表示为一个系统用户,用例通常表示为系统具有的一个功能.通过用例图我们可 ...