Microsoft
®
User’s Guide and Reference
SQL Server 2000 Driver for
JDBC
December 2002
© 2002 Microsoft. All rights reserved. Printed in the U.S.A.
SQL Server 2000 Driver for JDBC User’s Guide and Reference
3
Table of Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Using This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Typographical Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
About SQL Server 2000 Driver for JDBC Documentation . . . . 9
1 Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Connecting to a Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1. Setting the Classpath. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2. Registering the Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3. Passing the Connection URL . . . . . . . . . . . . . . . . . . . . . . 13
2 Using the SQL Server 2000 Driver for JDBC. . . . . . . 15
About the SQL Server 2000 Driver for JDBC . . . . . . . . . . . . . . 15
Connecting Through the JDBC Driver Manager . . . . . . . . . . . 16
URL Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Connecting Through Data Sources. . . . . . . . . . . . . . . . . . . . . . 17
How SQL Server 2000 Driver for JDBC Data Sources Are
Implemented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Calling a Data Source in an Application. . . . . . . . . . . . . . . 18
Using Connection Pooling. . . . . . . . . . . . . . . . . . . . . . . . . . 18
Specifying Connection Properties. . . . . . . . . . . . . . . . . . . . . . . 20
Using the SQL Server 2000 Driver for JDBC on a
Java 2 Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
SQL Server 2000 Driver for JDBC User’s Guide and Reference
4 Table of Contents
Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SQL Server 2000 Driver for JDBC Errors. . . . . . . . . . . . . . . 22
Database Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SQL Server 2000 Driver for JDBC Directory Structure. . . . . . . 23
3 SQL Server 2000 Driver for JDBC . . . . . . . . . . . . . . . 25
Data Source and Driver Classes . . . . . . . . . . . . . . . . . . . . . . . . 25
Connection String Properties. . . . . . . . . . . . . . . . . . . . . . . . . . 26
Connecting to Named Instances . . . . . . . . . . . . . . . . . . . . . . . 28
Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
SQL Escape Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Isolation Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Using Scrollable Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Installing Stored Procedures for JTA . . . . . . . . . . . . . . . . . . . . 32
A JDBC Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
JDBC Compatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Supported Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
B SQL Server 2000 Driver for JDBC GetTypeinfo . . . . 65
C Designing JDBC Applications for Performance
Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Using Database Metadata Methods . . . . . . . . . . . . . . . . . . . . 78
Minimizing the Use of Database Metadata Methods . . . 78
Avoiding Search Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . 79
Using a Test Query to Determine Table Characteristics . . 79
Retrieving Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Retrieving Long Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Reducing the Size of Data Retrieved. . . . . . . . . . . . . . . . . 82
Choosing the Right Data Type. . . . . . . . . . . . . . . . . . . . . . 82
SQL Server 2000 Driver for JDBC User’s Guide and Reference
Table of Contents 5
Selecting JDBC Objects and Methods. . . . . . . . . . . . . . . . . . . . 83
Using Parameter Markers as Arguments to
Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Using the Statement Object Instead of the
PreparedStatement Object . . . . . . . . . . . . . . . . . . . . . . . . . 85
Choosing the Right Cursor . . . . . . . . . . . . . . . . . . . . . . . . . 85
Designing JDBC Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Managing Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Managing Commits in Transactions . . . . . . . . . . . . . . . . . . 87
Choosing the Right Transaction Model . . . . . . . . . . . . . . . 88
Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Using updateXXX Methods. . . . . . . . . . . . . . . . . . . . . . . . . 88
Using getBestRowIndentifier() . . . . . . . . . . . . . . . . . . . . . . 89
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
D SQL Escape Sequences for JDBC . . . . . . . . . . . . . . . . 93
Date, Time, and Timestamp Escape Sequences . . . . . . . . . . . . 94
Scalar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Outer Join Escape Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Procedure Call Escape Sequences . . . . . . . . . . . . . . . . . . . . . . . 97
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99