/*
* Example of connecting to Oracle
* Completed April 10, 2002 Douglas Jeffries
*/
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
/**
* This class handles the database connectivity
*/
public class SimpleConnection
{
protected Connection conn;
public SimpleConnection()
{
conn = null;
}
public static void main( String [] args )
{
try
{
Class.forName("oracle.jdbc.OracleDriver");
}
catch( ClassNotFoundException e )
{
System.err.println( "Could not load class oracle.jdbc.OracleDriver" );
return;
}
SimpleConnection sc = new SimpleConnection();
sc.connect( "student", "student", getURL( "csse-sp-4.rose-hulman.edu", 1521, "cs333", "" ) );
// JDBC URL = "jdbc:oracle:thin:@csse-sp-4.rose-hulman.edu:1521:cs333"
ResultSet rset = sc.getResultSet( "select FIRST_NAME,LAST_NAME from PERSON" );
if( rset != null )
try
{
int count = 0;
while( rset.next() )
{
System.out.println( " " + rset.getString("FIRST_NAME") + " " + rset.getString("LAST_NAME") );
count++;
}
System.out.println( " -- " + count + " rows found --" );
}
catch( SQLException e ) { printException(e); }
sc.disconnect();
}
/** Returns true
if connected, else false
. */
public boolean isConnected()
{
try
{
return ( conn != null && !conn.isClosed() );
}
catch( SQLException e )
{
printException( e );
conn = null;
return false;
}
}
/** Get a database URL string from the parameters. Works for Oracle or ODBC datasources. **/
public static String getURL( String dbServer, int dbPort, String dbServiceID, String odbcName )
{
if( odbcName.length() == 0 )
return "jdbc:oracle:thin:@" + dbServer + ":" + dbPort + ":" + dbServiceID;
else
return "jdbc:odbc:" + odbcName;
}
/** Connects to a database. */
public void connect( String username, String password, String dbURL)
{
// try to connect with the login information
try
{
// close current connection
if( conn != null )
disconnect();
conn = DriverManager.getConnection( dbURL, username, password ) ;
if( conn == null ) // check if it actually got a connection
System.out.println( "Not connected." );
else // get information from the DatabaseMetaData
{
System.out.println( "Connected." );
DatabaseMetaData metaData = conn.getMetaData();
System.out.println( " Database Product: " + metaData.getDatabaseProductName() );
System.out.println( " Database Version: " + metaData.getDatabaseProductVersion() );
}
}
catch ( SQLException err ) { printException( err ); }
}
/** Disconnect from the database */
public void disconnect()
{
if( conn == null )
return; // already disconnected
try
{
conn.commit(); // save all changes
conn.close(); // close the connection
conn = null; // garbage collect the Connection object
System.out.println( "Disconnected." );
}
catch( SQLException e ) { printException( e ); }
}
/** get a Statement object that is scrollable (if supported) and read-only **/
public Statement createStatement()
{
if( ! isConnected() )
return null; // have to be connected to get a Statement
// get the meta data to find supported connection type
DatabaseMetaData metaData = null;
try
{
metaData = conn.getMetaData();
if( metaData.supportsResultSetConcurrency( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE ) )
return conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE );
else if( metaData.supportsResultSetType( ResultSet.TYPE_SCROLL_INSENSITIVE ) )
return conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
else
return conn.createStatement(); // create a default statement
}
catch( SQLException e )
{
printException( e );
return null;
}
}
/** execute an SQL query and return a java.sql.ResultSet **/
public ResultSet getResultSet( String query )
{
if( conn == null )
{
System.err.println( "Not connected to database." );
return null;
}
Statement stmt = createStatement();
ResultSet rset = null;
try
{
stmt = conn.createStatement(); // a default Statement
rset = stmt.executeQuery( query );
}
catch( SQLException e )
{
printException( e );
}
return rset;
}
/** helper function to print out the details of an SQLException to standard error **/
protected static void printException( SQLException e )
{
while( e != null )
{
System.err.println( "\nSQL Exception:" );
System.err.println( "\t" + e.getMessage() );
System.err.println( "\tSQL State: " + e.getSQLState() );
System.err.println( "\tVendor Error: " + e.getErrorCode() );
e = e.getNextException();
}
}
}