InterBase and Java: making the connection
<< Using Apache, PHP and InterBase to develop websites | Database technology articles | InterBase and Java: storing and retrieving BLOB data >>
InterBase® and Java®: making the connection
By Joe Shevland
This section describes how to connect to an InterBase® database using the Java® platform and JDBC (Java® DataBase Connectivity). InterBase® 6 and Interclient 1.6 are used in these examples, however the same information may apply to older or more recent versions. The Java® 2 platform has been used throughout this section however the code should also be compatible with JRE 1.1 environments.
The JDBC driver
JDBC provides a uniform methodology for accessing relational databases, and makes use of vendor provided drivers to hide the variances in the different database products. InterBase® JDBC access also uses the standard JDBC extension package (Javax.sql.*) which is provided as a standalone JAR package.
The InterBase® JDBC driver is bundled in a JAR file called interclient.jar which is available as part of the Interclient download.
The JDBC standard extension package is available from Sun's Java® website and is bundled in a JAR file called jdbc2_0-stdext.jar.
In order to successfully connect to an InterBase® database, both of these JAR files will need to be in the CLASSPATH of your application or applet e.g.
set CLASSPATH=.:interclient.jar:jdbc2_0-stdext.jar:<...> SET CLASSPATH=.;interclient.jar;jdbc2_0-stdext.jar;<...> (Windows version)
InterServer will also need to be installed and running on the server to which you are connecting.
Connecting to a database
Once the required JAR files are located in your CLASSPATH and the necessary software is running on the server, it is a simple matter to connect to a local or remote InterBase® server. See the example code below for the relevant details.
Example 1.0: Creating a connection
import Java®.sql.*;
import InterBase®.interclient.DataSource;
...
DataSource dataSource = new InterBase®.interclient.DataSource();
try {
// Set the standard properties
/* set the network protocol */
dataSource.setNetworkProtocol("jdbc:InterBase®:");
/* the hostname or IP address of the server */
dataSource.setServerName("dbserver.domain.com");
/* the full path to your database file */
dataSource.setDatabaseName("/data/mydb.gdb");
/* a descriptive name */
dataSource.setDataSourceName("SomeName");
/* a descriptive comment */
dataSource.setDescription("SomeDescription");
/* the TCP port Interclient listens on by default */
dataSource.setPortNumber(3060);
/* set the InterBase® role to use */
dataSource.setRoleName("MyRole");
/* set the login timeout to 10 seconds */
dataSource.setLoginTimeout(10);
// Set the non-standard properties
/* Perform a sweep when connecting */
dataSource.setSweepOnConnect(false);
// The following line actually starts up the database connection:
Connection con = dataSource.getConnection(con_user,con_pw);
} catch ( SQLException se ) {
// Report the problem to the standard error stream:
System.err.println("Exception creating the database connection: "+se);
}
Instead of using the new DataSource approach, you can also use the older method of registering a JDBC driver with the DriverManager and calling getConnection(). A brief example follows. Note that this approach does not allow you to specify an InterBase® role (I may have spotted somewhere in the docs that you can do this by specifying a system property or some such: anyone?).
import Java®.sql.*;
...
try {
// Resolve the JDBC driver class:
Class.forName("InterBase®.interclient.Driver");
// The following line actually starts up the database connection:
Connection con = DriverManager.getConnection
("jdbc:InterBase®://localhost/data/mydb.gdb","SYSDBA","masterkey");
} catch ( ClassNotFoundException cnfe ) {
// Report the problem to the standard error stream:
System.err.println("Couldn't locate the driver class: "+cnfe);
} catch ( SQLException se ) {
// Report the problem to the standard error stream:
System.err.println("Exception creating the database connection: "+se);
}
Testing the connection: A simple SELECT
Now that you have a successful connection to the database, the following code snippet shows you how to perform a simple SELECT statement and retrieve the results. You can replace the table and column details with ones you have set up.
Example 1.1: Executing a SELECT query
// Assume we still have the Connection instance 'con' from the previous example
try {
String username = null;
int userid = 0;
String sql = "SELECT userid, username FROM users WHERE userid = 10000";
Statement sment = con.createStatement();
ResultSet rs = sment.executeQuery(sql);
if ( rs.next() ) {
// Calls to rs.next() position the result set to the next available row.
// You'd use 'while ( rs.next() )' in the case that multiple rows may be returned.
userid = rs.getInt("userid"); /* the column index can also be used */
username = rs.getString("username");
} else {
// The row does not exist in the database
}
rs.close(); /* Perhaps unnecessary as the next line will close the ResultSet too */
sment.close(); /* But some drivers have resource problems, so its to be safe */
} catch ( SQLException se ) {
// Report the problem to the standard error stream:
System.err.println("Exception performing query: "+se);
} finally {
// If we've finished with the connection, close it in the
// finally clause so it will get closed no matter what.
// May need to wrap this call in another try..catch block.
con.close();
}
Closing the connection
To close an active database connection, it is a simple matter of calling the close() method of the Connection class e.g.
// Assuming 'con' is an active Connection instance:
try {
con.close();
} catch ( SQLException se ) {
...
}
This paper was written by Joe Shevland and is copyright Joe Shevland and IBPhoenix Inc.
See also:
InterBase® and Java®: storing and retrieving BLOB data
Java® UDF functional specification
back to top of page
<< Using Apache, PHP and InterBase to develop websites | Database technology articles | InterBase and Java: storing and retrieving BLOB data >>







