Setting JDBC with Greenplum

January 19, 2012

JDBC is the driver used to access a database with Java. Greenplum has a full working JDBC implementation.
In this short article we’ll see how to use it.


## Download and install
It is possible to download the JDBC for Greenplum directly from the Greenplum Community Edition site (http://www.greenplum.com/community/downloads/database-ce/).
Look for the *”Connectivity Tools”* file.
You will receive a link to download the archive file.
Extract the archive and run the binary extracted. Then follow the instructions on screen and in less than a minute you have installed JDBC.
## Prepare the Greenplum server
After a successful installation, make sure that the server accepts TCP connections from the desired hosts. Check that *listen_addresses* is properly set in postgresql.conf.
**Note:** by default, Greenplum listens to any address.
Another aspect you have to consider is the user authentication, which is delegated to the pg_hba.conf file (please refer to page 36 of Greenplum AdminGuide for more information).
After you have verified the user is able to connect to the database, you can go on and test JDBC.
Connecting to a Greenplum Database with JDBC is a three steps procedure:
* Import JDBC
* Load the driver
* Connect to the database
To import JDBC, add this line to the top of your Java source:

import java.sql.*;

To load the driver, use this line:

Class.forName("org.postgresql.Driver");

Remember that the *forName* function can throw a *ClassNotFoundException* if the driver is not available. We do not try to catch that exception in the simple example below. You should in your production environment.
To connect to a database using JDBC, you have to use a connection URL. It can be in one of these three forms:
* jdbc:postgresql:databasename
* jdbc:postgresql://host/databasename
* jdbc:postgresql://host:port/databasename
Build an URL that suits your needs and use it with the getConnection function. For example:

Connection db = DriverManager.getConnection(url, username, password);

## Issuing a query
To perform queries on the database, you have to use a Statement or a PreparedStatement instance.
You can create a Statement object using the createStatement method of class Connection.
The result of a query execution is a ResultSet object, containing th entire result.
A ResultSet object can be iterated with the usual next() function, as shown in the example below.
## A simple example

import java.sql.*;
public static void main(){
Class.forName("org.postgresql.Driver");
Connection db = DriverManager.getConnection("jdbc:postgresql://localhost/testdb","username", "passw0rd");
Statement st = db.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM mytable WHERE columnfoo = 500");
while (rs.next()) {
System.out.print("Column 1 returned ");
System.out.println(rs.getString(1));
}
rs.close();
st.close();
}

It is very important to understand how to bind values in queries, in order to prevent from SQL injection issues. The following snippet is an example for that:

int foovalue = 500;
PreparedStatement st = conn.prepareStatement("SELECT * FROM mytable WHERE columnfoo = ?");
st.setInt(1, foovalue);
ResultSet rs = st.executeQuery();
while (rs.next()) {
System.out.print("Column 1 returned ");
System.out.println(rs.getString(1));
}
rs.close();
st.close();

Share this

More Blogs