Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как проверить существование таблицы в БД / 18 сообщений из 18, страница 1 из 1
27.06.2006, 15:00
    #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
27.06.2006, 15:06
    #33817052
Pitbull terrier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
Можно посмотреть в сторону java.sql.DatabaseMetaData

но вообще это вендор-специфик фича, в сам SQL можно добавить что-то типа
create... if not exists;
...
Рейтинг: 0 / 0
27.06.2006, 15:10
    #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
27.06.2006, 15:10
    #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
27.06.2006, 15:35
    #33817151
Pitbull terrier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
тьфу, обшибся


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

это все целиком и полностью относится к "if not exists"
...
Рейтинг: 0 / 0
27.06.2006, 15:40
    #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
27.06.2006, 15:45
    #33817190
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
см.
Код: plaintext
INFORMATION_SCHEMA.TABLES
- это стандарт ANSI


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


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


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

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

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

с нескончаемым увожением, асёлъ.
...
Рейтинг: 0 / 0
28.06.2006, 10:45
    #33818551
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
Это же элементарно: если присоздании таблы получишь соотв. исключение - значит таблица существует, т.е. создавать в try ... catch
...
Рейтинг: 0 / 0
28.06.2006, 10:55
    #33818593
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
AndronЭто же элементарно: если присоздании таблы получишь соотв. исключение - значит таблица существует, т.е. создавать в try ... catch
отличный способ! похоже на коробку из под торта.. берешь гипс (try {} catch) и пинаешь (создаешь таблицу), если дальше идешь в гипсе, то таблица существует )))
...
Рейтинг: 0 / 0
28.06.2006, 10:58
    #33818603
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
Ну дык ... способ то действительно отличный
...
Рейтинг: 0 / 0
28.06.2006, 11:00
    #33818618
асёлъ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
Andron Ну дык ... способ то действительно отличный
это плохой способъ
...
Рейтинг: 0 / 0
28.06.2006, 11:43
    #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
28.06.2006, 12:11
    #33818903
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить существование таблицы в БД
асёлъ Andron Ну дык ... способ то действительно отличный
это плохой способъ

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

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

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


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


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