Создание и подключение таблицы Derby DB

Я пишу набор консольных словесных игр на основе Eclipse и интегрировал встроенный драйвер Derby DB для хранения истории результатов пользователей.

Мой вопрос касается инициализации таблицы Derby.

Само соединение с базой данных Derby имеет проверку состояния:"jdbc: derby: dbName; create = true". Поэтому, если БД существует, она подключается, если не создает.

Я застрял на том, как сделать это с TBL в базе данных. Даже с помощью этого похожего вопроса: как создать таблицу, если она не существует, используя Derby Db

Я включил свой код ниже. Мой код генерирует исключение sql в запросе для таблицы "RPS". (Мое имя dbName - "RPSdb", а имя TBL - "RPS".)

Это исключение перехватывается моим блоком catch и передается статическому методу в другом классе ('DerbyHelper'). Этот статический метод настроен прямо сейчас, чтобы в настоящее время всегда возвращать true.

Мой вопрос состоит в том, как мне кодировать мой блок catch и соответствующий вспомогательный класс, чтобы я мог реализовать вышеупомянутую функциональность TBL?

 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 ответ

Интерфейс java.sql.Connection имеет метод getMetaData() который возвращается java.sql.DatabaseMetaData и этот интерфейс содержит метод getTables() который скажет вам, существует ли ваша таблица базы данных или нет.

Другие вопросы по тегам