Witam,
Mam pewny problem, z wykonaniem sprawdzenia do bazy czy istnieje dana tabela, jeśli nie istnieje to muszę ją założyć, w moim przypadku chodzi o HSQL.
Pozdrawiam.
Witam,
Mam pewny problem, z wykonaniem sprawdzenia do bazy czy istnieje dana tabela, jeśli nie istnieje to muszę ją założyć, w moim przypadku chodzi o HSQL.
Pozdrawiam.
HSQL chyba nie wspiera konstrukci 'IF [NOT] EXISTS'. Możesz tworzyć tabelę za każdym razem i łapać wyjątek, kiedy to się nie powiedzie(czyli tabela już była)
Jeżeli masz połączenie z bazą danych w postaci connection to:
connection.getMetaData().getTables(null, null, "nazwa", null);
Powinno wystarczyć. Zwrócony wynik to zwyczajny resultset.
A HSQL nie obsługuje CREATE TABLE IF NOT EXISTS
?
Dzięki za pomoc zabrakło mi getTables() ;-)
Z tego co czytałem CREATE TABLE IF NOT EXISTS nie jest obsługiwany w HSQL.
Rozwiązałem ten problem w następujący sposób, gdy tabela jest zwraca true kiedy nie ma false.
public static boolean tableExist( final String tableName ){
Boolean result = false;
Connection conn;
try {
conn = new ConnectHSQL().getConnection();
if(conn != null)
{
ResultSet tables = conn.getMetaData().getTables(null,null,tableName.toUpperCase(),null);
while(tables.next())
{
String currentTableName = tables.getString("TABLE_NAME");
if(currentTableName.equalsIgnoreCase(tableName))
{
result = true;
break;
}
}
tables.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}