java.sql
Provides the API for accessing and processing data stored in a data source (usually a relational database) using the JavaTM programming language. This API includes a framework whereby different drivers can be installed dynamically to access different data sources. Although the JDBCTM API is mainly geared to passing SQL statements to a database, it provides for reading and writing data from any data source with a tabular format. The reader/writer facility, available through thejavax.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.1 API Includes
The JDBCTM 4.1 API includes both thejava.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.1 API incorporates all of the previous JDBC API versions:- 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.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 
DriverManagerfacilityDriverManagerclass -- makes a connection with a driverSQLPermissionclass -- provides permission when code running within a Security Manager, such as an applet, attempts to set up a logging stream through theDriverManagerDriverinterface -- provides the API for registering and connecting drivers based on JDBC technology ("JDBC drivers"); generally used only by theDriverManagerclassDriverPropertyInfoclass -- 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)Connectioninterface -- provides methods for creating statements and managing connections and their propertiesSavepoint-- provides savepoints in a transaction
 - Retrieving and updating the results of a query
   
ResultSetinterface
 - Standard mappings for SQL types to classes and interfaces in the
       Java programming language
   
Arrayinterface -- mapping for SQLARRAYBlobinterface -- mapping for SQLBLOBClobinterface -- mapping for SQLCLOBDateclass -- mapping for SQLDATENClobinterface -- mapping for SQLNCLOBRefinterface -- mapping for SQLREFRowIdinterface -- mapping for SQLROWIDStructinterface -- mapping for SQLSTRUCTSQLXMLinterface -- mapping for SQLXMLTimeclass -- mapping for SQLTIMETimestampclass -- mapping for SQLTIMESTAMPTypesclass -- provides constants for SQL types
 - Custom mapping an SQL user-defined type (UDT) to a class in the
 	  Java programming language
   
SQLDatainterface -- specifies the mapping of a UDT to an instance of this classSQLInputinterface -- provides methods for reading UDT attributes from a streamSQLOutputinterface -- provides methods for writing UDT attributes back to a stream
 - Metadata
   
DatabaseMetaDatainterface -- provides information about the databaseResultSetMetaDatainterface -- provides information about the columns of aResultSetobjectParameterMetaDatainterface -- provides information about the parameters toPreparedStatementcommands
 - 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.1 API
 - Allow 
Connection,ResultSetandStatementobjects to be used with the try-with-resources statement - Supported added to 
CallableStatementandResultSetto specify the Java type to convert to via thegetObjectmethod DatabaseMetaDatamethods to return PseudoColumns and if a generated key is always returned- Added support to 
Connectionto specify a database schema, abort and timeout a physical connection. - Added support to close a 
Statementobject when its dependent objects have been closed - Support for obtaining the parent logger for a 
Driver,DataSource,ConnectionPoolDataSourceandXADataSource 
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.Driverclass 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 accessiblity
 - 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 
PreparedStatementthat is associated with aPooledConnectionhas 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 
PreparedStatementobject - Ability to retrieve values from automatically generated columns
 - Ability to have multiple 
ResultSetobjects returned fromCallableStatementobjects open at the same time - Ability to identify parameters to 
CallableStatementobjects by name as well as by index ResultSetholdability -- 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
       
Refobject references - Ability to programmatically update 
BLOB,CLOB,ARRAY, andREFvalues. - Addition of the 
java.sql.Types.DATALINKdata 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 
ResultSetinterface 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 
ResultSetupdater 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.BigDecimalvalues, 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 
DataSourceinterface as a means of making a connection. The Java Naming and Directory InterfaceTM (JNDI) is used for registering aDataSourceobject 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
 RowSettechnology -- 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 SQLDISTINCT
 type are the UDTs that may be custom mapped.  The following three
 steps set up a custom mapping:
 - Defining the SQL structured type or 
DISTINCTtype in SQL - Defining the class in the Java programming language to which the
 	  SQL UDT will be mapped.  This class must implement the
 	  
SQLDatainterface. - Making an entry in a 
Connectionobject's type map that contains two things:- the fully-qualified SQL name of the UDT
 - the 
Classobject for the class that implements theSQLDatainterface 
 
 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, the
 PreparedStatement.setObject method will automatically map the
 object back to its SQL type to store it in the data source.
 
Package Specification
Related Documentation
- Getting Started--overviews of the major interfaces
 
 - Chapters on the JDBC
      API--from the online version of The Java Tutorial Continued
 
 - JDBCTMAPI Tutorial and Reference, Third Edition-- a complete reference and tutorial for the JDBC 3.0 API
 
Interfaces
| Array | 
          The mapping in the Java programming language for the SQL type
 ARRAY. 
          
    
         | 
      
| Blob | 
          The representation (mapping) in
 the JavaTM programming
 language of an SQL
 BLOB value. 
          
    
         | 
      
| CallableStatement | The interface used to execute SQL stored procedures. | 
| Clob | 
          The mapping in the JavaTM programming language
 for the SQL CLOB type. 
          
    
         | 
      
| Connection | 
           A connection (session) with a specific database.  | 
      
| DatabaseMetaData | Comprehensive information about the database as a whole. | 
| Driver | The interface that every driver class must implement. | 
| NClob | 
          The mapping in the JavaTM programming language
 for the SQL NCLOB type. 
          
    
         | 
      
| ParameterMetaData | 
          An object that can be used to get information about the types
 and properties for each parameter marker in a
 PreparedStatement object. 
          
    
         | 
      
| PreparedStatement | An object that represents a precompiled SQL statement. | 
| Ref | 
          The mapping in the Java programming language of an SQL REF
 value, which is a reference to an SQL structured type value in the database. 
          
    
         | 
      
| ResultSet | A table of data representing a database result set, which is usually generated by executing a statement that queries the database. | 
| ResultSetMetaData | 
          An object that can be used to get information about the types
 and properties of the columns in a ResultSet object. 
          
    
         | 
      
| RowId | The representation (mapping) in the Java programming language of an SQL ROWID value. | 
| Savepoint | 
          The representation of a savepoint, which is a point within
 the current transaction that can be referenced from the
 Connection.rollback method. 
          
    
         | 
      
| SQLData | The interface used for the custom mapping of an SQL user-defined type (UDT) to a class in the Java programming language. | 
| SQLInput | An input stream that contains a stream of values representing an instance of an SQL structured type or an SQL distinct type. | 
| SQLOutput | The output stream for writing the attributes of a user-defined type back to the database. | 
| SQLXML | The mapping in the JavaTM programming language for the SQL XML type. | 
| Statement | 
           The object used for executing a static SQL statement and returning the results it produces.  | 
      
| Struct | 
           The standard mapping in the Java programming language for an SQL structured type.  | 
      
| Wrapper | Interface for JDBC classes which provide the ability to retrieve the delegate instance when the instance in question is in fact a proxy class. | 
Classes
| Date | 
           A thin wrapper around a millisecond value that allows
 JDBC to identify this as an SQL   | 
      
| DriverManager | 
           The basic service for managing a set of JDBC drivers.  | 
      
| DriverPropertyInfo | 
           Driver properties for making a connection.  | 
      
| SQLPermission | Legacy security code; do not use. | 
| Time | 
           A thin wrapper around the   | 
      
| Timestamp | 
           A thin wrapper around   | 
      
| Types | 
           The class that defines the constants that are used to identify generic SQL types, called JDBC types.  | 
      
Enums
| ClientInfoStatus | 
          Enumeration for status of the reason that a property could not be set
 via a call to Connection.setClientInfo 
          
    
         | 
      
| RowIdLifetime | Enumeration for RowId life-time values. | 
Exceptions
| BatchUpdateException | 
          The subclass of SQLException thrown when an error
 occurs during a batch update operation. 
          
    
         | 
      
| DataTruncation | 
          An exception  thrown as a DataTruncation exception
 (on writes) or reported as a
 DataTruncation warning (on reads)
  when a data values is unexpectedly truncated for reasons other than its having
  execeeded MaxFieldSize. 
          
    
         | 
      
| SQLClientInfoException | 
          The subclass of SQLException is thrown when one or more client info properties
 could not be set on a Connection. 
          
    
         | 
      
| SQLDataException | 
          The subclass of SQLException thrown when the SQLState class value
 is '22', or under vendor-specified conditions. 
          
    
         | 
      
| SQLException | 
           An exception that provides information on a database access error or other errors.  | 
      
| SQLFeatureNotSupportedException | 
          The subclass of SQLException thrown when the SQLState class value is '0A'
 ( the value is 'zero' A). 
          
    
         | 
      
| SQLIntegrityConstraintViolationException | 
          The subclass of SQLException thrown when the SQLState class value
 is '23', or under vendor-specified conditions. 
          
    
         | 
      
| SQLInvalidAuthorizationSpecException | 
          The subclass of SQLException thrown when the SQLState class value
 is '28', or under vendor-specified conditions. 
          
    
         | 
      
| SQLNonTransientConnectionException | 
          The subclass of SQLException thrown for the SQLState
 class value '08', or under vendor-specified conditions. 
          
    
         | 
      
| SQLNonTransientException | 
          The subclass of SQLException thrown when an instance where a retry
 of the same operation would fail unless the cause of the SQLException
 is corrected. 
          
    
         | 
      
| SQLRecoverableException | 
          The subclass of SQLException thrown in situations where a
 previously failed operation might be able to succeed if the application performs
  some recovery steps and retries the entire transaction or in the case of a
 distributed transaction, the transaction branch. 
          
    
         | 
      
| SQLSyntaxErrorException | 
          The subclass of SQLException thrown when the SQLState class value
 is '42', or under vendor-specified conditions. 
          
    
         | 
      
| SQLTimeoutException | 
           The subclass of   | 
      
| SQLTransactionRollbackException | 
          The subclass of SQLException thrown when the SQLState class value
 is '40', or under vendor-specified conditions. 
          
    
         | 
      
| SQLTransientConnectionException | 
          The subclass of SQLException for the SQLState class
 value '08', or under vendor-specified conditions. 
          
    
         | 
      
| SQLTransientException | 
          The subclass of SQLException is thrown in situations where a
 previoulsy failed operation might be able to succeed when the operation is
 retried without any intervention by application-level functionality. 
          
    
         | 
      
| SQLWarning | 
           An exception that provides information on database access warnings.  | 
      
Interfaces
Classes
Enums
Exceptions
- BatchUpdateException
 - DataTruncation
 - SQLClientInfoException
 - SQLDataException
 - SQLException
 - SQLFeatureNotSupportedException
 - SQLIntegrityConstraintViolationException
 - SQLInvalidAuthorizationSpecException
 - SQLNonTransientConnectionException
 - SQLNonTransientException
 - SQLRecoverableException
 - SQLSyntaxErrorException
 - SQLTimeoutException
 - SQLTransactionRollbackException
 - SQLTransientConnectionException
 - SQLTransientException
 - SQLWarning