Создание и подключение таблицы 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()
который скажет вам, существует ли ваша таблица базы данных или нет.