package nl.amis.database; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; public class Database { private static Connection conn; private static final String HOST = "amisnt15"; private static final String PORT = "1521"; private static final String DATABASE = "LUDO"; private static final String USER = "SCOTT"; private static final String PASSWORD = "TIGER"; private static String lock = "lock"; private static int count = 0; /** * Very crude Database connection provider. It actually caches a single fysical database connection */ private Database() { // } public static Connection getConnection() throws SQLException { synchronized (lock) { if (conn == null || conn.isClosed()) { createConnection(); } return conn; } } public static void closeConnection() throws SQLException { synchronized (lock) { if (conn != null && !conn.isClosed()) { System.out.println("Closing connection"); conn.close(); } } } private static void createConnection() throws SQLException { try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@" + HOST + ":" + PORT + ":" + DATABASE, USER, PASSWORD); System.out.println("Creating connection"); } catch (ClassNotFoundException e) { System.out.println("Error loading driver: " + e.getMessage()); } } public static boolean test() { Statement stmt = null; ResultSet rs = null; try { Connection con = getConnection(); stmt = con.createStatement(); rs = stmt.executeQuery("select * from dual"); while (rs.next()) { System.out.println(rs.getString(1) + " <> " + new Date()); } } catch (Exception e ) { System.out.println("Error during test :" + e.getMessage()); e.printStackTrace(); return false; } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (count++%5 == 0) closeConnection(); } catch (Exception ex) { System.out.println("Error closing resultset or connection " + ex.getMessage()); ex.printStackTrace(); } } return true; } // public static void main(String[] args) { // Timer runner = new Timer(false); // DatabaseTesterTask pt = new DatabaseTesterTask(); // runner.schedule(pt,100,100); // Timer runner2 = new Timer(false); // DatabaseTesterTask pt2 = new DatabaseTesterTask(); // runner2.schedule(pt2,75,40); // // } // public static void main(String[] args) { System.out.println(test()?"SUCCESS":"FAILURE"); } }