|
|
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Перед тем как создать таблицу, хотелось бы проверить, существует ли она Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 15:00 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Можно посмотреть в сторону java.sql.DatabaseMetaData но вообще это вендор-специфик фича, в сам SQL можно добавить что-то типа create... if not exists; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 15:06 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
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 еще более вендор-специфик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 15:10 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 15:10 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
тьфу, обшибся мыно вообще это вендор-специфик фича, в сам SQL можно добавить что-то типа create... if not exists; это все целиком и полностью относится к "if not exists" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 15:35 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Код: plaintext 1. 2. 3. 4. 5. 6. 7. Сенкс Для столбцов getColumnы как я понял надо будет использовать. А что по поводу переменных catalog schemaPattern, нормально, что я их к null буду присваивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 15:40 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
см. Код: plaintext а насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 15:45 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
funikovyuriсм. Код: plaintext а насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно а для чего узнавать есть ли таблица? :) чтобы ее создать, судя по всему... делать это надо как минимум редко. ну а про тысячи таблиц... тащатся ведь не таблицы, а метаданные. ~10^3 строк в резалт сете на клиенте это много? по-моему терпимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 16:04 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Timm funikovyuriсм. Код: plaintext а насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно а для чего узнавать есть ли таблица? :) чтобы ее создать, судя по всему... делать это надо как минимум редко. ну а про тысячи таблиц... тащатся ведь не таблицы, а метаданные. ~10^3 строк в резалт сете на клиенте это много? по-моему терпимо. из таких "терпимо" потом все и вырастает... если для решения любой задачи использовать один и тот же инструмент обычно ничего хорошего не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 16:24 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
funikovyuriса насчет getTable().... а если в схеме БД созданы тысячи таблиц, то мы будем для того чтобы узнать есть ли там какая-либо таблица тащить на клиента их всех? Прикольно И с каких это пряников мы их будем "все" тащить. Тащатся только те которые попадают под паттерн имени таблицы. А если они таки все тащатся то это сугубо проблема производительности JDBC драйвера и его авторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 17:31 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Blazkowiczо! уважаемый, приятно видеть тебя туто. с нескончаемым увожением, асёлъ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 17:35 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Это же элементарно: если присоздании таблы получишь соотв. исключение - значит таблица существует, т.е. создавать в try ... catch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 10:45 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
AndronЭто же элементарно: если присоздании таблы получишь соотв. исключение - значит таблица существует, т.е. создавать в try ... catch отличный способ! похоже на коробку из под торта.. берешь гипс (try {} catch) и пинаешь (создаешь таблицу), если дальше идешь в гипсе, то таблица существует ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 10:55 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Ну дык ... способ то действительно отличный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 10:58 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Andron Ну дык ... способ то действительно отличный это плохой способъ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 11:00 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
Правильный способ - использовать 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 не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 11:43 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
асёлъ Andron Ну дык ... способ то действительно отличный это плохой способъ А что в нем плохого? В отличие от предыдущего варианта мой способ кроссплатформенный :) Но конечно можно использовать метаданные базы, тоже способ подходящий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 12:11 |
|
||
|
Как проверить существование таблицы в БД
|
|||
|---|---|---|---|
|
#18+
отличный способ! похоже на коробку из под торта.. берешь гипс (try {} catch) и пинаешь (создаешь таблицу), если дальше идешь в гипсе, то таблица существует ))) Не понял, при чём тут торт и что такое "гипс". Но неважно. Способ самый плохой, какой можно придумать. -таблица может не создаться из-за нехватки прав на создание - или если неправильно задать список столбцов Конечно, будут разные коды ошибки которые можно анализировать. Но откуда уверенность, что предусмотрены все возможные коды и что в новой версии СУБД не появится новых кодов. В общем,вопрос отвечен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2006, 12:32 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33817555&tid=2148859]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
242ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 590ms |

| 0 / 0 |
