Ошибка при попытке проверить, существует ли конкретная таблица в базе данных MySQL с использованием JDBC - PullRequest
1 голос
/ 17 января 2012

Я хочу проверить, существует ли таблица с именем basestation в таблице MySQL из программы Java, использующей JDBC.Мой код:

conn = DriverManager.getConnection(url, username, password);

DatabaseMetaData dbm = conn.getMetaData();

tables = dbm.getTables(null, null, "basestations", null);

if (tables.next())
{   
     //Table exists in database
     //...
}
else
{
     //Table does not exist
     //...
}

, но, хотя таблица basestations существует в моей базе данных, мне кажется, что мой код никогда не входит в первое предложение и всегда решает, что таблица не существует, что естественно вызывает ошибку SQL table already exists in databaseпри попытке создать таблицу с самого начала.

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Не лучший способ сделать это ниже .. Но вы могли бы сделать следующее:

Используйте JDBC для отправки следующего заявления:

select count(*) from information_schema.tables where information_schema.table_schema='your_schema' and information_schema.table_name='basestations';

Разбор результирующего набора jdbc.

Это должно вернуть либо 1, либо 0. Если результирующий счетчик равен 1, то таблица существует, в противном случае - нет.

0 голосов
/ 17 января 2012

Я подозреваю, что ваш getTables () ничего не возвращает здесь.Согласно документации getTables возвращаются только описания таблиц, соответствующие каталогу, схеме, имени таблицы и критериям типа .В вашем случае каталог и схема имеют значение null, что может быть неверно (я думаю), заполните их правильными значениями.

...