Return to Snippet

Revision: 49321
at July 20, 2011 00:21 by studioevoque


Initial Code
package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.h2.tools.DeleteDbFiles;

public class DbUtil {
    private static Connection myConnection = null;
    
    static {
        try {
            Class.forName("org.h2.Driver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DbUtil.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
    public static void setupConn(String theDbPath) throws SQLException {
        if(null == myConnection || myConnection.isClosed()) {
            myConnection = DriverManager.getConnection("jdbc:h2:"+theDbPath);
        }
    }
    
    public static Statement getStatement() throws SQLException {
        if(null==myConnection || myConnection.isClosed()) {
            SQLException ex = new SQLException("No valid database connection!");
            Logger.getLogger(DbUtil.class.getName()).log(Level.SEVERE, null, ex);
            throw ex;
        }
        
        return myConnection.createStatement();
    }

    public static void closeConn() throws SQLException {
        myConnection.close();
    }
    
    public static void setupDB(String theDbPath) throws SQLException  {
        
        setupConn(theDbPath);
        runScript("init.sql");
    }
    
    public static void runScript(String thePath) throws SQLException {
        
        Statement stat = getStatement();
        stat.execute("runscript from '"+thePath+"'");
        stat.close();
    }
    
    public static void resetDB(String theDbPath) throws Exception {
        // to separate the dbname from the path
        int lastSlash = theDbPath.lastIndexOf('/');
        
        
        DeleteDbFiles.execute(theDbPath.substring(0,lastSlash), 
                              theDbPath.substring(lastSlash), 
                              true);
        
        setupDB(theDbPath);
    }
    
}

Initial URL


Initial Description
A simple utility class that uses the H2 SQL Db to maintain a database connection. It also gives a convenience method to run SQL scripts.

_Note:_The init.sql value is hardcoded, and should be replaced by a static variable if needed

Initial Title
Simple H2 Database utility class

Initial Tags
database, sql, java

Initial Language
Java