[ Master
documentation index ]
What is a JDBC
Driver?
DbVisualizer is as you know a generic tool to administrate and
explore databases. DbVisualizer is in fact quite simple with respect to how much
it knows about specific databases. The hard job is done by the JDBC driver which
is a set of Java classes that are either organized in a directory structure or
collected into a ZIP or JAR file. The magic of these JDBC drivers is that they
all match the JDBC specification and the standardized Java interfaces. This is
what DbVisualizer relies on. A JDBC driver is a database and database version
specific implementation and there are a range of drivers from the database
vendors themselves and 3:rd party authors. In order to establish a connection
with a database using DbVisualizer it needs to load the driver and then get
connected to the database through the driver.
From DbVisualizer 3.2 it is
possible to obtain a database connection using the Java Naming and Directory
Interface (JNDI). This technique is widely used in enterprise infrastructures
such as application server systems. It does not replace JDBC drivers but rather
adds an alternative way to get a handle to an already established database
connection. To enable database "lookup's" using JNDI an Initial Context
implementation must be loaded into the Driver Manager. These are then used in
the connection properties in order to lookup a database connection. The
following information explains the steps of how to get connected using a JDBC
Driver and also how to use JNDI to obtain a database connection.
Get a JDBC driver
First you
must grab a JDBC driver that works with the actual database and the version of
it. DbVisualizer has been verified with a collection of databases and JDBC
drivers. The following page lists the currently supported
combinations:
Databases and JDBC
Drivers
Information about almost all drivers that are available is
maintained by Sun Microsystems:
JDBC Data Access
API - Drivers
Download the driver to an appropriate directory. Make
sure to read the installation instructions provided with the driver. Some
drivers are delivered in ZIP or JAR format but need to be unpacked in order to
make the driver files visible to the Driver Manager.
(Drivers are
categorized into 4 types. We're not going to explain the differences here but
just give a hint that the "type 4" aka "thin" drivers are easiest to maintain
since they are pure Java drivers and do not depend on any external DLL's or
dynamic libraries i.e try to get your hands on a type 4 driver even though
DbVisualizer works with any type of driver).
Driver Manager
(The Driver Manager is used to define the path (aka
CLASSPATH) that will be searched when locating drivers. The list of locations is
searched in order from the top of the list when DbVisualizer connects to a
database).
The Driver
Manager in DbVisualizer is used to load drivers from the file system.
Start the driver manager dialog using the Database->Driver Manager menu choice.
The main area of the driver manager dialog consist of a tree with paths
as root elements and any driver classes identified by class name as
children.

Figure: Driver Manager dialog
The figure shows
six locations. To load a driver select the File->Add Location menu choice or the tool
bar button. The Driver Manager automatically searches all locations that are
empty for JDBC Driver classes.
It is important to load the root of the JDBC
Driver i.e a JDBC Driver implementation consists in most cases of several Java
classes. These are also in most cases organized using the package mechanism in
Java. Example:
oracle.jdbc.driver.OracleDriver
Each
package part in the name above (separated by ".") will be represented by a
directory in the file system. These directories are either explicitly visible in
the file system or implicitly if the driver is packaged in a zip or jar file.
The root of the driver is in this case where the "oracle" directory is located.
In the Oracle example this is the "9.2.0.3" directory so the Driver Manager must
load this directory in order to find the driver class. If the driver is packaged
in a zip or jar file then point the driver manager to that file in order for the
driver manager to locate the driver class.
Drivers with external
dependencies
Some drivers depend on several zip/jar files or directories. An
example is the JDBC driver for Microsoft SQL Server that requires 3 different
jar files to be loaded. In this case simply load all jar files even though the
driver manager will only report the driver class in one of them.
Errors
A path in red color
indicates that the location has been removed from the file system but
information about it is still in the driver manager. The Edit->Remove Invalid menu choice simply
removes all these locations.
Several versions of the same
driver
The list of drivers is searched from the top of the list when
DbVisualizer connects to a database. If there are several versions of the same
driver in the driver manager then use the Edit->Move Up or Edit->Move Down menu choices to re-arrange
the order of the list. Once the connection has been established the version of
the actual driver is listed in the Connection tab message area.
Loading JNDI Initial
Contexts
Initial Context classes are needed in order to get a handle to
a database connection that is registered in a JNDI lookup service. These classes
are similar to JDBC driver classes since an Initial Context implementation is
required.
Remember that the appropriate
JDBC driver classes must be loaded into the Driver Manager even if the database
connection is obtained using JNDI.
To
load Initial Context classes into the Driver Manager simply follow the steps
outlined for loading JDBC drivers. The difference is that you will instead load
locations that contain Initial Context classes instead of JDBC drivers. Once
Initial Context classes have been found the following will appear in the Driver
Manager list.

Figure: Driver Manager List with Initial Context
classes
The visual difference between the identified JDBC drivers and Initial
Context classes is the icon in the tree.
Entries that are not needed in
the list can be removed to make the list less cluttered.
Setup a database
connection
This section explains how to setup a Database Connection in the
Connection tab.
Setup using JDBC driver
A
Database Connection in DbVisualizer is the root of all communication with a
specific database. It requires at least a JDBC driver and a URL that identifies
the database to establish connection with. A new Database Connection is created
using the Database->Add Database
Connection menu choice in the main window:

Figure: New Database Connection using JDBC
driver
The Connection tab is the only
enabled tab if you are not already connected to the database. Database
connection objects appear throughout the application and are by default listed
by their URL. A URL can be, and often is,
quite complex and long. The Database
Alias is used to optionally set a more readable name of the database
connection. The JDBC Driver list when
opened shows all identified JDBC drivers that have been exposed in the JDBC
Driver Manager. Just open the list and select the appropriate driver. The
Database URL list contains the standard URL's for the supported
drivers:
jdbc:oracle:thin:@<host>:<port>:<sid>
jdbc:sybase:Tds:<host>:<port>/<database>
jdbc:db2://<host>:<port>/<database>
jdbc:microsoft:sqlserver://<host>:<port>;DatabaseName=<database>
jdbc:mysql://<host>/<database>
jdbc:postgresql:net://<host>/<database>
jdbc:postgresql://<host>:<port>/<database>
jdbc:daffodilDB://<host>:<port>/<database>
jdbc:mckoi://<host>/
jdbc:hsqldb:<database>
jdbc:hsqldb:hsql://<host>:<port>
jdbc:Cache://<host>:<port>/<namespace>
jdbc:informix-sqli://<host>:<port>/<database>:informixserver=<dbservername>
jdbc:pointbase:server://<host>:<port>/<database>
jdbc:borland:dslocal:<file>
jdbc:sapdb://<host>:<port>/<database>
jdbc:mimer://<host>:<port>/<database>
jdbc:FrontBase://<host>:<port>/<database>
jdbc:pervasive://<host>:<port>/<database>
The < and > characters indicates that they
are the boundary for a placeholder and that they shall be replaced with
appropriate values. Ex.
jdbc:oracle:thin:@proddb:1521:bookstore
jdbc:sybase:Tds:localhost:2638
jdbc:db2://localhost/crm
jdbc:microsoft:sqlserver://localhost;DatabaseName=customers
Userid and Password is optional but most databases require
that they are specified.
Some drivers accept additional proprietary
parameters described in the Connection
Properties section.
Setup using JNDI lookup
The
information needed in order to obtain a database connection using JNDI lookup is
similar to getting connected using a JDBC driver.

Figure: New Database Connection using JNDI
lookup
The figure above shows parameters to connect with a lookup service
that is obtained using the weblogic.jndi.WLInitialContextFactory class.
The mypointbase lookup name specifies a
logical name for the database connection that wll be used. This example is in
its simplest form since userid and password is not specified, nor where the
database connection is finally fetched from. Any errors during the process of
getting a handle to the database connection will appear in the Connection
Message area.
Connection Properties
The
connection properties are primarly used to override some of the generic
properties available in the Tool Properties window. There are two ways to change
the property for a database connection:
- Tool Properties
These changes
will be applied to all database connections that have not overridden the
actual properties in its Connection Properties.
- Connection Properties
These
changes apply for the actual database connection only.
-"Okay, so
there are two places to change the value of a property. Which shall I use?"
This depends on whether the change should be applied to all database
connections or not. If the majority of database connections should use the new
value then it is recommended to set it in Tool Properties.
Any overridden
properties in the Connection Properties tab are indicated with an icon in the
tab label.

Figure: Connection Properties
The connection
properties tab is organized in the same was as the tool properties window. The
difference is that the list only includes the categories that are applicable for
a database connection. The categories are briefly:
- Driver Properties
- Database Connection
- SQL Statements
- Transaction
The Driver Properties category is only available in
the Connection Properties tab and not in Tool Properties. The next section
explains the Driver Properties while the other categories are described in the
Tool
Properties document.
Driver Properties
The Driver
Properties category is used to fine tune a driver or Initial Context before the
database connection is established.
Driver Properties for JDBC Driver
Some JDBC drivers support driver specific properties that are not covered
in the JDBC specification. New properties can be added for testing purposes
(driver tests).

Figure: Driver Properties for JDBC Driver
The
list of parameters, their default values and parameter descriptions are
determined by the actual driver. Not all drivers supports additional driver
properties. To change a value just modify it in the list. The first column in
the list indicates whether the property has been modified or not and so whether
DbVisualizer will pass that parameter and value onto the driver at connect
time.
New parameters can be added using the buttons at the bottom of the
dialog. Be aware that additional parameters do not necessarily mean that the
driver will do anything with them.
Driver Properties for JNDI
Lookup
The Driver Properties category for a JNDI Lookup connection always
contain the same parameters.

Figure: Driver Properties for JNDI lookup
The
list of options for JNDI lookup is determined by the constants in the javax.naming.Context class. To change a value
just modify the value of the parameter. The first column in the list indicates
whether the property has been modified or not and so whether DbVisualizer will
pass that parameter and value onto the driver at connect time. New parameters
can be added using the buttons at the bottom of the dialog. Be aware that
additional parameters do not necessarily mean that the InitialContext class will
do anything with them.
Connect to the
Database
Press Connect when all
information has been specified. DbVisualizer will pass all entered information
onto the selected driver and if the connection is established the following will
appear.

Figure: A freshly initiated database connection
using JDBC driver
The Connection
Message now lists the name and version of the database as well as the
name and version of the JDBC driver. The database connection node in the tree
indicates that it is connected. The connection properties cannot be edited once
while a database connection is established. The Alias can be edited by selecting the database
connection node in the tree and then clicking on the name.
The figure
above also shows that the database connection node in the tree has been expanded
to show its child objects.
If the connection is unsuccessful it will be
indicated by an error icon in the tree. The error message as reported by the
database or the driver will appear in the Connection Message area. Use this to track the
actual problem. Since these conditions are specific for the combination of
driver and database it is generally recommended to check the driver and database
documentation to find out more. Below are
a few common problem situations:
No
suitable driver. There is no driver that can handle a connection for
the specified URL. The most common reason is that the driver is not loaded
in the Driver Manager. Also make sure the URL is correct spelled. |
DbVisualizer and Java determines what
driver to load based on the database URL. If the URL is malformed then
there might be no driver that is able to handle the database
connection based on that URL. This error is produced when this situation
occurs. The recommendation is to check the JDBC driver documentation for
the correct syntax. |
java.sql.SQLException:
Io exception: Invalid number format for port number Io exception:
Invalid number format for port number
|
The URL templates that are available in
the Database URL list contains the "<" and ">" place holders. These
are there to indicate that the value between them must be replaced with an
appropriate value. The "<" and ">" characters must then be removed.
This example error message is produced by the Oracle driver when
using the following URL:
jdbc:oracle:thin:@<qinda>:<1521>:<fuji>
Simply remove the "<" and
">" characters and try again. |
Connections Overview
The
Connections overview is displayed by selecting the Connections object in the Database Objects
Tree. This overview displays all database connections in a list and is handy to
get a quick overview of all connections. In addition to the URL, driver, etc
there are a few symbols describing the state of each connection. Double clicking
on a connection will change the display to show that specific
connection.

Figure: The Connections Overview
Information for
each symbol is provided in the description area below the list. The fifth check
symbol is the only editable symbol and is used to set the state of the "Connect
when Connect All" property.
Copyright © 2004 Minq Software AB. All rights
reserved.