powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как проверить существование таблицы в БД
18 сообщений из 18, страница 1 из 1
Как проверить существование таблицы в БД
    #33817025
WhiteDream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перед тем как создать таблицу, хотелось бы проверить, существует ли она
Код: plaintext
1.
2.
            String table = "create table users (Colum1 varchar(50) primary key, "
                    + "Colum2 varchar(50)";
             int  results = statement.executeUpdate(table);
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817052
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно посмотреть в сторону java.sql.DatabaseMetaData

но вообще это вендор-специфик фича, в сам SQL можно добавить что-то типа
create... if not exists;
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817063
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/DatabaseMetaData.html#getTables(java.lang.String, java.lang.String, java.lang.String, java.lang.String[])

create .. if not exist еще более вендор-специфик.
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817065
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
                    
DatabaseMetaData metaData = connection.getMetaData();
tablesResultSet = metaData.getTables(catalog, schema, tableName, 
 new  String[]{"TABLE"});
 if  (!tablesResultSet.next())
{
}
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817151
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, обшибся


мыно вообще это вендор-специфик фича, в сам SQL можно добавить что-то типа
create... if not exists;

это все целиком и полностью относится к "if not exists"
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817178
WhiteDream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
                    
DatabaseMetaData metaData = connection.getMetaData();
tablesResultSet = metaData.getTables(catalog, schema, tableName, 
 new  String[]{"TABLE"});
 if  (!tablesResultSet.next())
{
}

Сенкс
Для столбцов getColumnы как я понял надо будет использовать.
А что по поводу переменных catalog schemaPattern, нормально, что я их к null буду присваивать?
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817190
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см.
Код: plaintext
INFORMATION_SCHEMA.TABLES
- это стандарт ANSI


а насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817267
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriсм.
Код: plaintext
INFORMATION_SCHEMA.TABLES
- это стандарт ANSI


а насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно
а для чего узнавать есть ли таблица? :)
чтобы ее создать, судя по всему... делать это надо как минимум редко.
ну а про тысячи таблиц... тащатся ведь не таблицы, а метаданные.
~10^3 строк в резалт сете на клиенте это много? по-моему терпимо.
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817334
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm funikovyuriсм.
Код: plaintext
INFORMATION_SCHEMA.TABLES
- это стандарт ANSI


а насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно
а для чего узнавать есть ли таблица? :)
чтобы ее создать, судя по всему... делать это надо как минимум редко.
ну а про тысячи таблиц... тащатся ведь не таблицы, а метаданные.
~10^3 строк в резалт сете на клиенте это много? по-моему терпимо.

из таких "терпимо" потом все и вырастает... если для решения любой задачи использовать один и тот же инструмент обычно ничего хорошего не получается.
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817543
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriса насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно

И с каких это пряников мы их будем "все" тащить. Тащатся только те которые попадают под паттерн имени таблицы. А если они таки все тащатся то это сугубо проблема производительности JDBC драйвера и его авторов.
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33817555
Фотография асёлъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczо!
уважаемый, приятно видеть тебя туто.

с нескончаемым увожением, асёлъ.
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33818551
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это же элементарно: если присоздании таблы получишь соотв. исключение - значит таблица существует, т.е. создавать в try ... catch
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33818593
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndronЭто же элементарно: если присоздании таблы получишь соотв. исключение - значит таблица существует, т.е. создавать в try ... catch
отличный способ! похоже на коробку из под торта.. берешь гипс (try {} catch) и пинаешь (создаешь таблицу), если дальше идешь в гипсе, то таблица существует )))
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33818603
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык ... способ то действительно отличный
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33818618
Фотография асёлъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andron Ну дык ... способ то действительно отличный
это плохой способъ
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33818790
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный способ - использовать DatabaseMetaData, потому что это средство JDBC. Если почему-то не получается, то сначала посмотреть описание JDBC драйвера своей CУБД, а если там нет указаний, значит использовать средства СУБД.
Например:

INFORMATION_SCHEMA.TABLES
- это стандарт ANSI

Ну может быть. Ну и что? Стандарт ANSI в компьютер не позасовываешь. Берём например Oracle (другое брать не хочу, но это неважно). Там можно подать SQL команду вроде:

SELECT COUNT(*) FROM ALL_TABLES WHERE TABLE_NAME='ИНТЕРЕСУЮЩЕЕ ИМЯ ТАБЛИЦЫ'

Результат будет 1 или 0 в зависимости от того, существует ли таблица. В другой СУБД будет другой SQL оператор. Ещё в Oracle есть "словарь данных" откуда можно узнать то же. Он бывает и в других СУБД, но хотя на него тоже есть стандарт, фактически названия его таблиц зависят от СУБД.
Итак, соображаем нужный SQL оператор, и делаем запрос с помощью JDBC, но это в крайнем случае если DatabaseMetaData не подходит.
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33818903
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
асёлъ Andron Ну дык ... способ то действительно отличный
это плохой способъ

А что в нем плохого? В отличие от предыдущего варианта мой способ кроссплатформенный :)
Но конечно можно использовать метаданные базы, тоже способ подходящий.
...
Рейтинг: 0 / 0
Как проверить существование таблицы в БД
    #33818973
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отличный способ! похоже на коробку из под торта.. берешь гипс (try {} catch) и пинаешь (создаешь таблицу), если дальше идешь в гипсе, то таблица существует )))

Не понял, при чём тут торт и что такое "гипс". Но неважно. Способ самый плохой, какой можно придумать.

-таблица может не создаться из-за нехватки прав на создание
- или если неправильно задать список столбцов
Конечно, будут разные коды ошибки которые можно анализировать. Но откуда уверенность, что предусмотрены все возможные коды и что в новой версии СУБД не появится новых кодов.


В общем,вопрос отвечен.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как проверить существование таблицы в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]