Module 12: Connecting to a Database

Download Report

Transcript Module 12: Connecting to a Database

Connecting to a Database
225 City Avenue, Suite 106
Bala Cynwyd, PA 19004
610.206.0101, phone
610.206.0102, fax
www.learnquest.com
Learning Objectives
 Drivers
 The DriverManager Class
 Connection Failure
 Read-Only Connections
 Using JDBC Drivers
 Closing the Connection
 Database Connections
 Summary
 Connecting to a Database
2
Drivers
 The java.sql package defines interfaces that
describe how Java will connect to a database
 Vendors provide implementations of these interfaces
which allow a Java program to connect to a particular
RDBMS (Oracle, DB2 etc.)
 This vendor provided code is called a “Driver”
3
The DriverManager Class
 If your program needs to connect to two different
RDBMSs (DB2, Oracle) it will need to have two sets of
drivers loaded at the same time. The DriverManager
class manages these drivers
 DriverManager keeps track of the drivers that are
available and handles establishing a connection
between a database and the appropriate driver
 It manages events such as driver login time limits and
the printing of log and tracing messages
4
Using JDBC Drivers
 A Driver class is loaded and registered with the
DriverManager in one of two ways:
 By calling the method Class.forName
 By adding the Driver class to the java.lang.System
property jdbc.drivers
7
The JDBC-ODBC Driver
 Java contains a built-in driver called the JDBC-ODBC
driver. It uses Open Database Connectivity to allow a
program to connect to any database that is ODBC
compliant. Such databases include Microsoft Access,
SQL-Server, Cloudscape and others
 The JDBC-ODBC driver does not perform well
enough to be used for anything other than testing
8
Example: Loading a Driver
try {
// loading the JDBC-ODBC Driver
Class.forName(
"sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e) {
System.out.println("Message: “ +
e.getMessage());
}
9
Using JDBC Drivers
Types of JDBC Drivers:
Type 1
Type 2
Type 3
Type 4
JDBC-ODBC bridge
Native-API
JDBC-Net
Native-protocol
third party API
partly-Java driver
pure Java driver
pure Java driver
In general the higher numbered drivers are preferred. In
practice you will simply use a driver provided by the
vendor
10
Database Connections
 Once the driver is loaded you must establish a
connection to the database using the
getConnection() method of the DriverManager
class
 getConnection() accepts a vendor specific string
which holds the database location and other
connection information
 A user can get information about a Connection
object's database by invoking the
Connection.getMetaData method
12
Data Sources
 The JDBC 2.0 Standard Extension API provides the
DataSource interface as an alternative to the
DriverManager for establishing a connection
 Data sources create pools of connections that can be
reused by different programs. If many different
programs need to connect to the same database a
datasource can provide better performance than
simply setting up a separate connection in each and
every program
 Data sources are used in J2EE
13
Connecting to a Database (con’t)
 When an application uses the DriverManager to
create a Connection object it must supply a URL to
the DriverManager.getConnection method
 A JDBC URL provides a way of identifying a data
source so that the appropriate driver will recognize it
and establish a connection with it
 The standard syntax for JDBC URLs:
jdbc:<subprotocol>:<subname>
15
The JDBC URL
 A URL (Uniform Resource Locator) gives information for
locating a resource on the Internet. It can be thought of
as an address
 The JDBC URL is composed of:
 Jdbc – the protocol. The protocol in a JDBC URL is always jdbc
 <subprotocol> - the name of the driver or the name of a database
connectivity mechanism, which may be supported by one or more
drivers
 <subname> - a way to identify the data source
• The subname can vary depending on the subprotocol and it can have any
internal syntax the driver writer chooses including a subname
• The point of a subname is to give enough information to locate the data
source
16
Connection Example
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// Define the DSN(Data Source Name)
String url = "Jdbc:Odbc:JdbcLab";
String databaseUser = "";
String databasePassword = "";
Connection databaseConnection =
DriverManager.getConnection(url,databaseUser,
databasePassword);
}
catch(Exception e) {
// error processing here… }
17
Common Connection Problems
 If the Connection fails with the message “Class not
found” it usually means that the Driver is not in the
CLASSPATH
 If the Connection fails with the message “Driver not
found” it usually means that the Driver has not been
registered with the DriverManager
18
Read-Only Connections
 One can put the connection to the database in
read-only mode as a hint to the driver to enable
database optimizations
 The method of Connection interface
setReadOnly() is used to establish read-only
connection
 The method of Connection interface isReadOnly()
is used to get an information whether Connection
object is in read-only mode
19
Closing the Connection
 It is recommended that one explicitly closes database
connections when they are no longer needed:
myConnection.close();
 A Connection object is automatically closed when it is
garbage collected
 Also certain fatal errors can close a Connection
object
20
Summary
 The DriverManager class provides a method to
establish a connection with a database
 The traditional way to establish a connection with a
database is to use DriverManager.getConnection
method
 It is recommended that programmers explicitly close all
connections with the method Connection.close() as
soon as they are no longer needed, thereby freeing
DBMS resources as early as possible
21
Any Questions?
After discussing this chapter
with your instructor please
complete the exercises in Lab 9
22