![]() | |
|
Before you process any SQL statement with JDBC, you need to establish a connection with the data source you want to use. A data source can be a DBMS, a legacy file system, or some other source of data with a corresponding JDBC driver.
Typically, a JDBC application connects to a target data source using one of two classes:
DriverManager
: This fully implemented class connects an application to a data
source, which is specified by a database URL. When this class first attempts to establish a
connection, it automatically loads any JDBC 4.0 drivers found within the class path. Note that
your application must manually load any JDBC drivers prior to version 4.0:
// manually load JDBC driver class in JVM (before JDBC 4.0) try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch(ClassNotFoundException e) { System.err.println("Error loading driver: " + e); }
DataSource
: This interface is preferred over DriverManager
because
it allows details about the underlying data source to be transparent to your application. A
DataSource
object's properties are set so that it represents a particular
data source.
Specifying Database Connection URLs
A database connection URL is a string that your DBMS JDBC driver uses to connect to a database. It can contain information such as where to search for the database, the name of the database to connect to, and configuration properties. The exact syntax of a database connection URL is specified by your DBMS.
Java DB Database Connection URLs
The following is the database connection URL syntax for Java DB:
jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]*
subsubprotocol
specifies where Java DB should search for the database, either
in a directory, in memory, in a class path, or in a JAR file. It is typically omitted.
databaseName
is the name of the database to connect to.
attribute=value
represents an optional, semicolon-separated list of attributes.
These attributes enable you to instruct Java DB to perform various tasks (create database,
encrypt database, etc.)
The following database connection URL connects the user mikalai
to sample
database:
jdbc:derby:sample;user=mikalai;password=secret111
MySQL Connector/J Database URL
The following is the database connection URL syntax for MySQL Connector/J:
jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
host:port
is the host name and port number of the computer hosting your
database. If not specified, the default values of host and port are 127.0.0.1 and 3306,
respectively.
database
is the name of the database to connect to. If not specified, a
connection is made with no default database.
failoverhost
is the name of a standby database server (MySQL Connector/J
supports failover).
propertyName=propertyValue
represents an optional, ampersand-separated list
of properties. These attributes enable you to instruct MySQL Connector/J to perform
various tasks.
Using the DriverManager
Class
Connecting to your DBMS with the DriverManager
class involves calling the method
DriverManager.getConnection(...)
. The following method establishes a database connection:
public Connection getConnection() throws SQLException { Connection conn = null; Properties connectionProps = new Properties(); connectionProps.put("user", userName); connectionProps.put("password", password); if (dbms.equals("mysql")) { conn = DriverManager.getConnection("jdbc:mysql://" + serverName + ":" + portNumber + "/" + dbName, connectionProps); } else if (dbms.equals("derby")) { conn = DriverManager.getConnection("jdbc:derby:" + dbName + ";create=true", connectionProps); } return conn; }
The method DriverManager.getConnection(...)
establishes a database connection. This
method requires a database URL, which varies depending on your DBMS. The following are some examples
of database URLs:
MySQL: jdbc:mysql://localhost:3306/testdb
, where localhost
is
the name of the server hosting your database, 3306
is the port number, and
testdb
is the name of the database.
Java DB: jdbc:derby:testdb;create=true
, where testdb
is the
name of the database to connect to, and create=true
instructs the DBMS to
create the database.
NOTE: This URL establishes a database connection with the Java DB Embedded Driver. Java DB also includes a Network Client Driver, which uses a different URL syntax.
This method specifies the user name and password required to access the DBMS with a
Properties
object.
NOTE: In previous versions of JDBC, to obtain a connection, you first had to initialize your JDBC driver
by calling the method Class.forName(...)
. This method required an object of type
java.sql.Driver
. Each JDBC driver contains one or more classes that implements the
interface java.sql.Driver
. See the documentation of your DBMS driver to obtain the
name of the class that implements the interface java.sql.Driver
. Any JDBC 4.0 drivers
that are found in your class path are AUTOMATICALLY loaded. However, you must MANUALLY load any
drivers prior to JDBC 4.0 with the method Class.forName(...)
.
The method above returns a java.sql.Connection
object, which represents a connection
with the DBMS or a specific database. Query the database through this object.
![]() ![]() ![]() |