Acknowledgments
Part One
1 Introduction
- 1.1 What the JDBC 2.0 API Includes
- 1.2 Conventions Used in This Book
- 1.2.1 Fonts to Indicate Function
- 1.2.2 Icons to Indicate New Material
- 1.2.3 Special Page Designations in the Index
- 1.2.4 SQLException Is Implied in Method Explanations
- 1.2.5 Some Method Explanations Are Combined
- 1.3 Contents of the Book
- 1.3.1 Part One
- 1.3.2 Part Two
- 1.3.3 Suggested Order for Reading Chapters
- 1.3.4 Where to Find Information by Topic
- 1.3.5 Resources on the Web
- 1.4 What Is the JDBC API?
- 1.4.1 What Does the JDBC API Do?
- 1.4.2 A Base for Other APIs
- 1.4.3 The JDBC API Versus ODBC and UDA
- 1.4.4 Two-tier and Three-tier Models
- 1.4.5 SQL Conformance
- 1.4.6 JDBC Products
- 1.4.7 Java Software Framework
- 1.4.8 JDBC Driver Types
- 1.4.9 Obtaining JDBC Drivers
- 1.4.10 Java-relational DBMSs
- 1.4.11 Other Products
- 1.5 Java Overview
- 1.5.1 Java Is Portable
- 1.5.2 Java Is Object-Oriented
- 1.5.3 Java Makes It Easy to Write Correct Code
- 1.5.4 Java Includes a Library of Classes and Interfaces
- 1.5.5 Java Is Extensible
- 1.5.6 Java Is Secure
- 1.5.7 Java Performs Well
- 1.5.8 Java Scales Well
- 1.5.9 Java Is Multithreaded
- 1.6 Relational Database Overview
- 1.6.1 Integrity Rules
- 1.6.2 SELECT Statements
- 1.6.3 WHERE Clauses
- 1.6.4 Joins
- 1.6.5 Common SQL Commands
- 1.6.6 Result Sets and Cursors
- 1.6.7 Transactions
- 1.6.8 Stored Procedures
- 1.6.9 Metadata
2 Basic Tutorial
- 2.1 Getting Started
- 2.2 Setting Up a Database
- 2.3 Establishing a Connection
- 2.3.1 Loading Drivers
- 2.3.2 Making the Connection
- 2.4 Setting Up Tables
- 2.4.1 Creating a Table
- 2.4.2 Creating JDBC Statements
- 2.4.3 Executing Statements
- 2.4.4 Entering Data into a Table
- 2.5 Getting Data from a Table
- 2.6 Retrieving Values from Result Sets
- 2.6.1 Using the Method next
- 2.6.2 Using the getXXX Methods
- 2.6.3 Using the Method getString
- 2.7 Updating Tables
- 2.8 Milestone: The Basics of JDBC
- 2.9 Using Prepared Statements
- 2.9.1 When to Use a PreparedStatement Object
- 2.9.2 Creating a PreparedStatement Object
- 2.9.3 Supplying Values for PreparedStatement Parameters
- 2.9.4 Using a Loop to Set Values
- 2.9.5 Return Values for the Method executeUpdate
- 2.10 Using Joins
- 2.11 Using Transactions
- 2.11.1 Disabling Auto-commit Mode
- 2.11.2 Committing a Transaction
- 2.11.3 Using Transactions to Preserve Data Integrity
- 2.11.4 When to Roll Back a Transaction
- 2.12 Stored Procedures
- 2.12.1 SQL Statements for Creating a Stored Procedure
- 2.12.2 Calling a Stored Procedure Using the JDBC API
- 2.13 Creating Complete JDBC Applications
- 2.13.1 Putting Code in a Class Definition
- 2.13.2 Importing Classes to Make Them Visible
- 2.13.3 Using the main Method
- 2.13.4 Using try and catch Blocks
- 2.13.5 Retrieving Exceptions
- 2.13.6 Retrieving Warnings
- 2.14 Running the Sample Applications
- 2.15 Sample Code
- 2.15.1 Sample Code 1 and 2
- 2.15.2 Sample Code 3 and 4
- 2.15.3 Sample Code 5
- 2.15.4 Sample Code 6
- 2.16 Creating an Applet from an Application
- 2.16.1 Writing Applet Code
- 2.16.2 Running an Applet
- 2.16.3 Sample Code 7 and 8
- 2.17 Stored Procedures Using SQLJ and the JDBC API
- 2.17.1 Creating a Stored Procedure
- 2.17.2 Installing a Stored Procedure
- 2.17.3 Declaring a Stored Procedure in SQL
3 Advanced Tutorial
- 3.1 Getting Set Up to Use the JDBC 2.0 API
- 3.1.1 Setting Up to Run Code with New Features
- 3.1.2 Using Code Examples
- 3.2 Moving the Cursor in Scrollable Result Sets
- 3.2.1 Creating a Scrollable Result Set
- 3.2.2 Moving the Cursor Forward and Backward
- 3.2.3 Moving the Cursor to a Designated Row
- 3.2.4 Getting the Cursor Position
- 3.3 Making Updates to Updatable Result Sets
- 3.3.1 Creating an Updatable Result Set
- 3.3.2 Updating a Result Set Programmatically
- 3.3.3 Inserting and Deleting Rows Programmatically
- 3.3.4 Code Sample for Inserting a Row
- 3.3.5 Deleting a Row Programmatically
- 3.3.6 Seeing Changes in Result Sets
- 3.3.7 Getting the Most Recent Data
- 3.4 Making Batch Updates
- 3.4.1 Using Statement Objects for Batch Updates
- 3.4.2 Batch Update Exceptions
- 3.4.3 Sample Code for a Batch Update
- 3.5 SQL3 Data Types
- 3.5.1 DISTINCT Type
- 3.5.2 Using SQL3 Data Types
- 3.5.3 Blob, Clob, and Array Objects
- 3.5.4 Creating an SQL Structured Type
- 3.5.5 Creating a DISTINCT Type
- 3.5.6 Using References to Structured Types
- 3.5.7 Sample Code for Creating an SQL REF
- 3.5.8 Using SQL3 Types as Column Values
- 3.5.9 Inserting SQL3 Types into a Table
- 3.6 Using Custom Mapping
- 3.6.1 Implementing SQLData
- 3.6.2 Using a Connection's Type Map
- 3.6.3 Using Your Own Type Map
- 3.7 Using Data Sources
- 3.7.1 Using a DataSource Object to Get a Connection
- 3.7.2 Deploying a Basic DataSource Object
- 3.7.3 Deploying Other DataSource Implementations
- 3.7.4 Getting and Using a Pooled Connection
- 3.7.5 Deployment for Distributed Transactions
- 3.7.6 Using Connections for Distributed Transactions
4 MetaData Tutorial
- 4.1 Getting Information about Result Set Columns
- 4.1.1 Using the Method getColumnCount
- 4.1.2 Sample Code 9
- 4.1.3 Using Other ResultSetMetaData Methods
- 4.1.4 Getting Column Type Information
- 4.1.5 Sample Code 10 and 11
- 4.1.6 Sample Code 12
- 4.1.7 Getting Other Information
- 4.1.8 Using New JDBC 2.0 ResultSetMetaData Features
- 4.1.9 Getting Other Information about a Result Set
- 4.2 Getting Information about a Database or Database System
- 4.2.1 Categories of DatabaseMetaData Methods
- 4.2.2 Methods that Return a String
- 4.2.3 Methods that Return an int
- 4.2.4 Methods that Return a boolean
- 4.2.5 Methods that Return a ResultSet Object
- 4.2.6 Sample Code 13
- 4.2.7 Getting Information about DBMS Data Types
- 4.2.8 Sample Code 14
- 4.2.9 Getting Information about Primary and Foreign Keys
- 4.2.10 Sample Code 15
- 4.2.11 Sample Code 16
- 4.2.12 New JDBC 2.0 Core Methods
- 4.3 Generic Applications
- 4.3.1 Sample Code 17 and 18
- 4.3.2 Sample Code 19
5 Rowset Tutorial
- 5.1 Types and Uses of Rowsets
- 5.2 Using a Rowset
- 5.2.1 Creating a Rowset and Setting Properties
- 5.2.2 Rowsets and Event Notification
- 5.2.3 Obtaining a Scrollable and Updatable Rowset
- 5.2.4 Using a Rowset for Scrolling and Updating
- 5.2.5 Updating a Rowset
- 5.3 An EJB Example
- 5.3.1 A Distributed Application
- 5.3.2 Differences in Rowsets
- 5.3.3 EJB and Distributed Transactions
- 5.3.4 A Stateless SessionBean Object
- 5.3.5 Overview of an EJB Application
- 5.3.6 The Remote Interface
- 5.3.7 The Home Interface
- 5.3.8 The Client Class
- 5.3.9 The Enterprise Bean
Part Two
6 Array
- 6.1 Array Overview
- 6.1.1 Creating an Array Object
- 6.1.2 Getting Base Type Information
- 6.1.3 Materializing Array Data
- 6.1.4 Four Versions of the Method getArray
- 6.1.5 Four Versions of the Method getResultSet
- 6.1.6 Using Array Methods
- 6.1.7 Storing Array Objects
- 6.2 Array Interface Definition
- 6.3 Array Methods
7 BatchUpdateException
- 7.1 BatchUpdateException Overview
- 7.1.1 What a BatchUpdateException Object Contains
- 7.1.2 Retrieving BatchUpdateException Information
- 7.2 BatchUpdateException Class Definition
- 7.3 BatchUpdateException Constructors
- 7.4 BatchUpdateException Methods
- 7.4.1 Inherited Methods
- 7.4.2 Methods Defined in BatchUpdateException
8 Blob
- 8.1 Blob Overview
- 8.1.1 Creating a Blob Object
- 8.1.2 Materializing Blob Data
- 8.1.3 Storing a Blob Object
- 8.2 Blob Interface Definition
- 8.3 Blob Methods
9 CallableStatement
- 9.1 CallableStatement Overview
- 9.1.1 Creating a CallableStatement Object
- 9.1.2 IN Parameters
- 9.1.3 Making Batch Updates
- 9.1.4 OUT Parameters
- 9.1.5 Numbering of Parameters
- 9.1.6 INOUT Parameters
- 9.1.7 Retrieve OUT Parameters after Results
- 9.1.8 Retrieving NULL Values as OUT Parameters
- 9.2 CallableStatement Definition
- 9.3 CallableStatement Methods
- 9.3.1 Inherited Methods
- 9.3.2 Methods Defined in CallableStatement
10 Clob
- 10.1 Clob Overview
- 10.1.1 Creating a Clob Object
- 10.1.2 Materializing Clob Data
- 10.1.3 Storing a Clob Object
- 10.2 Clob Interface Definition
- 10.3 Clob Methods
11 Connection
- 11.1 Connection Overview
- 11.1.1 Opening a Connection
- 11.1.2 URLs in General Use
- 11.1.3 JDBC URLs
- 11.1.4 The odbc Subprotocol
- 11.1.5 Registering Subprotocols
- 11.1.6 Sending SQL Statements
- 11.1.7 Transactions
- 11.1.8 Transaction Isolation Levels
- 11.1.9 Freeing DBMS Resources
- 11.1.10 Using Type Maps
- 11.2 Connection Interface Definition
- 11.3 Connection Methods
- 11.4 Connection Fields
12 ConnectionEvent
- 12.1 ConnectionEvent Overview
- 12.2 ConnectionEvent Interface Definition
- 12.3 ConnectionEvent Constructors
- 12.4 ConnectionEvent Methods
- 12.4.1 Methods Inherited from java.util.EventObject
- 12.4.2 Methods Defined in javax.sql.ConnectionEvent
13 ConnectionEventListener
- 13.1 ConnectionEventListener Overview
- 13.1.1 Methods for Event Notification
- 13.1.2 Registering a ConnectionEventListener Object
- 13.2 ConnectionEventListener Interface Definition
- 13.3 ConnectionEventListener Methods
14 ConnectionPoolDataSource
- 14.1 ConnectionPoolDataSource Overview
- 14.1.1 Connection vs. PooledConnection Objects
- 14.2 ConnectionPoolDataSource Interface Definition
- 14.3 ConnectionPoolDataSource Methods
15 DatabaseMetaData
- 15.1 DatabaseMetaData Overview
- 15.1.1 Creating a DatabaseMetaData Object
- 15.1.2 ResultSet Objects as Return Values
- 15.1.3 String Patterns as Arguments
- 15.1.4 Pseudo Columns
- 15.1.5 New JDBC 2.0 Core API Features
- 15.1.6 Getting Advanced Type Information
- 15.2 DatabaseMetaData Interface Definition
- 15.3 DatabaseMetaData Methods
- 15.4 DatabaseMetaData Fields
16 DataSource
- 16.1 DataSource Overview
- 16.1.1 Properties
- 16.1.2 Using JNDI
- 16.1.3 Creating and Registering a DataSource Object
- 16.1.4 Connecting to a Data Source
- 16.1.5 DataSource Implementations
- 16.1.6 Logging and Tracing
- 16.1.7 Advantages of Using JNDI
- 16.2 DataSource Interface Definition
- 16.3 DataSource Methods
17 DataTruncation
- 17.1 DataTruncation Overview
- 17.1.1 Data Truncation with No Warning or Exception
- 17.1.2 Data Truncation on Reads
- 17.1.3 Data Truncation on Writes
- 17.1.4 What a DataTruncation Object Contains
- 17.1.5 Retrieving DataTruncation Information
- 17.2 DataTruncation Class Definition
- 17.3 DataTruncation Constructor
- 17.4 DataTruncation Methods
- 17.4.1 Inherited Methods
- 17.4.2 Methods Defined in DataTruncation
18 Date
- 18.1 Date Overview
- 18.1.1 Creating a Date Object
- 18.1.2 Deprecated Methods
- 18.1.3 Retrieving a Date Object
- 18.1.4 Advanced Features
- 18.2 Date Class Definition
- 18.3 Date Constructors
- 18.4 Date Methods
- 18.4.1 Inherited Methods
- 18.4.2 Methods Defined in Date
19 Distinct Types
- 19.1 Distinct Types Overview
- 19.1.1 Creating a Distinct Type Object
- 19.1.2 Storing Distinct Objects
- 19.1.3 Using Distinct Data Types
- 19.1.4 Custom Mapping of Distinct Types
20 Driver
- 20.1 Driver Overview
- 20.1.1 Loading and Registering a Driver
- 20.1.2 JDBC Implementation Alternatives
- 20.2 Driver Interface Definition
- 20.3 Driver Methods
21 DriverManager
- 21.1 DriverManager Overview
- 21.1.1 Keeping Track of Available Drivers
- 21.1.2 Establishing a Connection
- 21.1.3 DriverManager Methods Are Static
- 21.2 DriverManager Class Definition
- 21.3 DriverManager Methods
22 DriverPropertyInfo
- 22.1 DriverPropertyInfo Overview
- 22.1.1 Creating a DriverPropertyInfo Object
- 22.1.2 Getting and Setting Fields
- 22.2 DriverPropertyInfo Class Definition
- 22.3 DriverPropertyInfo Constructor
- 22.4 DriverPropertyInfo Fields
23 PooledConnection
- 23.1 PooledConnection Overview
- 23.1.1 Application Code for Connection Pooling
- 23.1.2 How Connection Pooling Works
- 23.1.3 The Life Cycle of a PooledConnection Object
- 23.2 PooledConnection Interface Definition
- 23.3 PooledConnection Methods
24 PreparedStatement
- 24.1 PreparedStatement Overview
- 24.1.1 Creating PreparedStatement Objects
- 24.1.2 Passing IN Parameters
- 24.1.3 Data Type Conformance on IN Parameters
- 24.1.4 Using setObject
- 24.1.5 Sending JDBC NULL as an IN parameter
- 24.1.6 Sending Very Large IN Parameters
- 24.1.7 Using PreparedStatement Objects in Batch Updates
- 24.2 PreparedStatement Interface Definition
- 24.3 PreparedStatement Methods
- 24.3.1 Methods Inherited from Statement
- 24.3.2 Methods Defined in PreparedStatement
25 Ref
- 25.1 Ref Overview
- 25.1.1 Creating an SQL Reference
- 25.1.2 Creating a Ref Object
- 25.1.3 Storing a Ref Object
- 25.1.4 Dereferencing a Ref Object
- 25.2 Ref Interface Definition
- 25.3 Ref Methods
26 ResultSet
- 26.1 ResultSet Overview
- 26.1.1 Rows and Columns
- 26.1.2 Cursors
- 26.1.3 Cursor Movement Examples
- 26.1.4 Determining the Number of Rows in a Result Set
- 26.1.5 Retrieving Column Values
- 26.1.6 Which getXXX Method to Use
- 26.1.7 Types of Result Sets
- 26.1.8 Concurrency Types
- 26.1.9 Providing Performance Hints
- 26.1.10 Creating Different Types of Result Sets
- 26.1.11 Using a Prepared Statement to Create Result Sets
- 26.1.12 Requesting Features That Are Not Supported
- 26.1.13 Using updateXXX Methods
- 26.1.14 Deleting a Row
- 26.1.15 Inserting Rows
- 26.1.16 Positioned Updates
- 26.1.17 Queries That Produce Updatable Result Sets
- 26.1.18 What Is Visible to Transactions
- 26.1.19 Visibility of Changes Made by Others
- 26.1.20 Visibility of a Result Set's Own Changes
- 26.1.21 Detecting Changes
- 26.1.22 Refetching a Row
- 26.1.23 Using Streams for Very Large Row Values
- 26.1.24 NULL Result Values
- 26.1.25 Optional or Multiple Result Sets
- 26.1.26 Closing a ResultSet Object
- 26.1.27 JDBC Compliance
- 26.2 ResultSet Interface Definition
- 26.3 ResultSet Methods
- 26.4 ResultSet Fields
27 ResultSetMetaData
- 27.1 ResultSetMetaData Overview
- 27.1.1 Creating a ResultSetMetaData Object
- 27.1.2 Using ResultSetMetaData
- 27.2 ResultSetMetaData Interface Definition
- 27.3 ResultSetMetaData Methods
- 27.4 ResultSetMetaData Fields
28 RowSet
- 28.1 RowSet Overview
- 28.1.1 The Event Model for Rowsets
- 28.1.2 Properties for a Rowset
- 28.1.3 Setting Parameters for the Command String
- 28.1.4 Traversing a RowSet Object
- 28.1.5 Executing a Command
- 28.1.6 Using a RowSet Object's Metadata
- 28.2 An Example Implementation
- 28.2.1 Overview of CachedRowSet
- 28.2.2 Uses for a CachedRowSet Object
- 28.2.3 Sample CachedRowSet Definition
- 28.2.4 Creating a CachedRowSet Object
- 28.2.5 Populating a CachedRowSet Object
- 28.2.6 Accessing Data
- 28.2.7 Modifying Data
- 28.2.8 Customizing Readers and Writers
- 28.2.9 Other Methods
- 28.3 Other Possible Implementations
- 28.3.1 JDBCRowSet Class
- 28.3.2 The WebRowSet Class
- 28.4 RowSet Interface Definition
- 28.5 RowSet Methods
- 28.5.1 Methods Inherited from ResultSet
- 28.5.2 Methods Defined in RowSet
- 28.6 RowSet Fields
29 RowSetEvent
- 29.1 RowSetEvent Overview
- 29.1.1 RowSet Events
- 29.1.2 Creating a RowSetEvent Object
- 29.2 RowSetEvent Interface Definition
- 29.3 RowSetEvent Constructor
- 29.4 RowSetEvent Methods
30 RowSetInternal
- 30.1 RowSetInternal Overview
- 30.2 RowSetInternal Interface Definition
- 30.3 RowSetInternal Methods
31 RowSetListener
- 31.1 RowSetListener Overview
- 31.1.1 Registering and Deregistering a Listener
- 31.1.2 Using RowSetListener Methods
- 31.2 RowSetListener Interface Definition
- 31.3 RowSetListener Methods
32 RowSetMetaData
- 32.1 RowSetMetaData Overview
- 32.2 RowSetMetaData Interface Definition
- 32.3 RowSetMetaData Methods
- 32.3.1 Methods Inherited from ResultSetMetaData
- 32.3.2 Methods Defined in RowSetMetaData
- 32.4 RowSetMetaData Fields
33 RowSetReader
- 33.1 RowSetReader Overview
- 33.1.1 The Reader/Writer Framework
- 33.1.2 Reading Data for a Disconnected Rowset
- 33.2 RowSetReader Interface Definition
- 33.3 RowSetReader Methods
34 RowSetWriter
- 34.1 RowSetWriter Overview
- 34.2 RowSetWriter Interface Definition
- 34.3 RowSetWriter Methods
35 SQLData
- 35.1 SQLData Overview
- 35.1.1 Creating a Custom Mapping
- 35.1.2 How SQLData Retrieves an Object
- 35.1.3 How SQLData Is Used to Store an Object
- 35.2 SQLData Interface Definition
- 35.3 SQLData Methods
36 SQLException
- 36.1 SQLException Overview
- 36.1.1 What an SQLException Object Contains
- 36.1.2 Retrieving SQLException Information
- 36.1.3 What an SQLException Means
- 36.2 SQLException Class Definition
- 36.3 SQLException Constructors
- 36.4 SQLException Methods
- 36.4.1 Inherited Methods
- 36.4.2 Methods Defined in SQLException
37 SQLInput
- 37.1 SQLInput Overview
- 37.1.1 Creating an SQLInput Object
- 37.1.2 Using readXXX Methods
- 37.2 SQLInput Interface Definition
- 37.3 SQLInput Methods
38 SQLOutput
- 38.1 SQLOutput Overview
- 38.2 SQLOutput Interface Definition
- 38.3 SQLOutput Methods
39 SQLWarning
- 39.1 SQLWarning Overview
- 39.1.1 What an SQLWarning Object Contains
- 39.1.2 Retrieving SQLWarning Information
- 39.2 SQLWarning Class Definition
- 39.3 SQLWarning Constructors
- 39.4 SQLWarning Methods
- 39.4.1 Inherited Methods
- 39.4.2 Methods Defined in SQLWarning
40 Statement
- 40.1 Statement Overview
- 40.1.1 Creating Statement Objects
- 40.1.2 Executing Statements Using Statement Objects
- 40.1.3 Statement Completion
- 40.1.4 Closing Statements
- 40.1.5 SQL Escape Syntax in Statements
- 40.1.6 Sending Batch Updates
- 40.1.7 Giving Performance Hints
- 40.1.8 Executing Special Kinds of Statements
- 40.2 Statement Interface Definition
- 40.3 Statement Methods
41 Struct
- 41.1 Struct Overview
- 41.1.1 Creating an SQL Structured Type
- 41.1.2 Storing Referenceable Instances of a Structured Type
- 41.1.3 Creating a Struct Object
- 41.1.4 Mapping SQL Inheritance
- 41.1.5 Ordering of Attributes
- 41.1.6 Storing a Struct Object
- 41.2 Struct Interface Definition
- 41.3 Struct Methods
42 Time
- 42.1 Time Overview
- 42.1.1 Creating a Time Object
- 42.1.2 Deprecated Methods
- 42.1.3 Retrieving a Time Object
- 42.1.4 Advanced Features
- 42.2 Time Class Definition
- 42.3 Time Constructors
- 42.4 Time Methods
43 Timestamp
- 43.1 Timestamp Overview
- 43.1.1 Creating a Timestamp Object
- 43.1.2 Retrieving a Timestamp Object
- 43.1.3 Advanced Features
- 43.2 Timestamp Class Definition
- 43.3 Timestamp Constructors
- 43.4 Timestamp Methods
44 Types
- 44.1 Overview of Class Types
- 44.1.1 Using the Constants in Class Types
- 44.1.2 Using the Constant OTHER
- 44.1.3 JDBC Types Added in the JDBC 2.0 Core API
- 44.2 Types Class Definition
45 XAConnection
- 45.1 XAConnection Overview
- 45.1.1 Application Code in Distributed Transactions
- 45.1.2 Distributed Transaction Requirements
- 45.1.3 Creating an XAConnection Object
- 45.1.4 What an XAResource Object Does
- 45.1.5 How the Two-phase Commit Protocol Works
- 45.1.6 Using an XAResource Object to Commit
- 45.1.7 The XAResource Interface
- 45.1.8 Steps in a Distributed Transaction
- 45.1.9 Distributed Transactions and EJB
- 45.2 XAConnection Interface Definition
- 45.3 XAConnection Methods
- 45.3.1 Methods Inherited from javax.sql.PooledConnection
- 45.3.2 Methods Defined in XAConnection
46 XADataSource
- 46.1 XADataSource Overview
- 46.1.1 Obtaining an XADataSource Object
- 46.1.2 XADataSource Objects and Resource Managers
- 46.2 XADataSource Interface Definition
- 46.3 XADataSource Methods
47 Mapping SQL and Java Types
- 47.1 Mapping Overview
- 47.2 Mapping SQL Types to Java Types
- 47.3 Basic JDBC Types
- 47.3.1 CHAR, VARCHAR, and LONGVARCHAR
- 47.3.2 BINARY, VARBINARY, and LONGVARBINARY
- 47.3.3 BIT
- 47.3.4 TINYINT
- 47.3.5 SMALLINT
- 47.3.6 INTEGER
- 47.3.7 BIGINT
- 47.3.8 REAL
- 47.3.9 DOUBLE
- 47.3.10 FLOAT
- 47.3.11 DECIMAL and NUMERIC
- 47.3.12 DATE, TIME, and TIMESTAMP
- 47.4 Advanced JDBC Data Types
- 47.4.1 BLOB
- 47.4.2 CLOB
- 47.4.3 ARRAY
- 47.4.4 DISTINCT
- 47.4.5 STRUCT
- 47.4.6 REF
- 47.4.7 JAVA_OBJECT
- 47.5 Examples of Mapping
- 47.5.1 Simple SQL Statement
- 47.5.2 SQL Statement with IN Parameters
- 47.5.3 SQL Statement with INOUT Parameters
- 47.6 Custom Mapping
- 47.7 Dynamic Data Access
- 47.8 Storing Java Objects in a Database
- 47.9 Tables for Type Mapping
- 47.9.1 JDBC Types Mapped to Java Types
- 47.9.2 Java Types Mapped to JDBC Types
- 47.9.3 JDBC Types Mapped to Java Object Types
- 47.9.4 Java Object Types Mapped to JDBC Types
- 47.9.5 Conversions by setObject
- 47.9.6 Conversions by ResultSet.getXXX Methods
- 47.9.7 JDBC Types Mapped to Database-specific SQL Types
Appendix A: For Driver Writers
- A.1 Requirements for All Drivers
- A.1.1 Implement Methods in the Interfaces
- A.1.2 Implement a Static Initializer
- A.1.3 Support Extensions to SQL-92 Entry Level
- A.1.4 Support Scalar Functions
- A.1.5 Provide Locks for Positioned Updates and Deletes
- A.1.6 Support Multithreading
- A.1.7 Throw Exceptions for Truncated Input Parameters
- A.1.8 Use Default Behaviors for SQL3 Data Types
- A.2 Permitted Variants
- A.2.1 When Functionality Is Not Supported
- A.2.2 Variation in Fundamental Properties
- A.2.3 Adding Functionality
- A.3 Security Responsibilities of Drivers
- A.3.1 Check Shared TCP Connections
- A.3.2 Check All Local File Access
- A.3.3 Assume the Worst
- A.4 Use SQLException for Exceptions
- A.5 Suggested Implementations
- A.5.1 Prefetch Rows
- A.5.2 Provide "Finalize" Methods for Applets
- A.5.3 Avoid Implementation-dependent States
Appendix B: Summary of Changes
- B.1 Overview of JDBC 2.0 Core API Changes
- B.2 Summary of New Functionality
- B.2.1 Scrollable Result Sets
- B.2.2 Batch Updates
- B.2.3 Programmatic Updates
- B.2.4 Other New Features
- B.3 Support for Advanced Data Types
- B.3.1 What Are the SQL3 Data Types?
- B.3.2 Summary of Support for the SQL3 Data Types
- B.3.3 Mapping of the New SQL3 Types
- B.3.4 SQL Locators
- B.3.5 Support for Storing Java Objects
- B.4 Complete List of Core API Changes
- B.4.1 What Did Not Change
- B.4.2 Additions to Existing Interfaces and Classes
- B.4.3 Deprecated Methods and Constructors
- B.4.4 New Interfaces, Classes, and Exceptions
- B.5 JDBC Standard Extension Features
- B.5.1 JNDI
- B.5.2 Connection Pooling
- B.5.3 Support for Distributed Transactions
- B.5.4 Rowsets
- B.6 Complete List of Standard Extension API
- B.7 Post JDBC 1.0 API Changes
- B.7.1 Numeric to Bignum to BigDecimal
- B.7.2 AutoClose Mode Dropped
- B.8 Early Design Decisions
- B.8.1 ResultSet.getXXX Methods
- B.8.2 PreparedStatement.setXXX Methods
- B.8.3 CallableStatement.registerOutParameter Method
- B.8.4 Support for Large OUT Parameters
- B.8.5 isNull versus wasNull
- B.8.6 Java Type Names or JDBC Type Names
- B.9 Where to Send Suggestions
Glossary
Index
jdbc-book@sun.com
Copyright © 1999, Sun Microsystems, Inc. All rights reserved.