• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Как проверить существует ли таблица в бд?

  • Автор темы pol_g
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

pol_g

Нужно проверить существует ли таблица с указанным названием в бд если не существует то сгенерировать если существует то выдать сообщение,как такую проверку можно реализовать на програмном уровне?
 
B

Barmutik

Способ проверки на наличие таблицы в базе зависит от сервера БД.

Простой вариант создавать таблицу и если сервер БД выдаст ошибку то .. судя по всему таблица уже существует в БД.. конечно если запрос на создание был верным :p
 
?

????

Для: pol_g
Код:
select count(*) from user_objects where object_name = 'ТАБЛИЦА' 
[and object_type = 'TABLE']
то что в квадраных скобках надо для поиска именно таблицы с таким имененим, а без скобок ищет проверяет только наличие объекта с таким именем

З.Ы. Oracle
З.З.Ы вместо user_objects можно all_objects и dba_objects в зависимости от задачи
 
D

dma_shl

Database.Session.GetTableNames

procedure GetTableNames(const DatabaseName, Pattern: String; Extensions, SystemTables: Boolean; List: TStrings);
Call GetTableNames to retrieve a list of the tables associated with a given database. DatabaseName specifies the name of the database from which to retrieve table names.

правда возвращает владелец(или схема в оракле)+имя таблицы
на зато не зависит от используемой бд.
 
B

Barmutik

Скажем так.. эта функция НЕ всегда возвращает полный список таблиц!
 
S

shm

Можно не создавать, а просто попробовать сделать выборку типа

select count(*) from ТАБЛИЦА;

В Oracle есть еще all_tables - может, и в других СУБД нечто похожее имеется.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!