0

I am writing a set of Eclipse console-based word games and have integrated an embedded Derby DB driver for storing a users result history.

My question is regarding Derby table initialization.

The Derby Database connection itself has a condition checker: "jdbc:derby:dbName;create=true" So if the DB exists, it connects, if not it creates.

I am stuck on how to do this with a TBL in the Database. Even with the help from this similar question: how to create table if it doesn't exist using Derby Db

I've included my code below. My code throws a sql exception at the query for the Table 'RPS'. (My dbName is 'RPSdb' and TBL name is 'RPS'.)

This exception is caught by my catch block and passed to a static method in a different class ('DerbyHelper'). This static method is setup right now to always return true for the time being.

My question is how to I code my catch block and corresponding helper class so that I can implement the above mentioned TBL functionality?

 Connection conn = null;
 ArrayList<Statement> statements = new ArrayList<Statement>(); // list of Statements, PreparedStatements
 Statement s;
 ResultSet rs = null;

    try {
             conn = DriverManager.getConnection(protocol + dbName + ";create=true");

             conn.setAutoCommit(false);

             s = conn.createStatement();
             statements.add(s);

             rs = s.executeQuery("select * from RPS");
             rs.next();
             int cG = rs.getInt(1) + corGuess;
             int iCG = rs.getInt(2) + inCorGuess;

             s.executeUpdate("UPDATE RPS SET corGuesses = " + cG 
                     + ", inCorGuesses= " + iCG);

             conn.commit();

         }
         catch( SQLException e ) {
            if( DerbyHelper.tableAlreadyExists( e ) ) {
               // what do I do here??
            }
        }

1 Answers1

2

Interface java.sql.Connection has method getMetaData() which returns java.sql.DatabaseMetaData and that interface contains method getTables() which will tell you whether your database table exists, or not.

Abra
  • 19,142
  • 7
  • 29
  • 41