Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [BCB6]MSDAC проверить есть ли таблица в базе, Проверка на существование таблицы в базе 
V
    Опции темы
XPyCT
Дата 31.8.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



всем привет!
скачал и установил SDAC для коннекта  к MSSQl серверу
и все работает прекрасно!
только вот на знаю  как мне выполнить следуюющее!

там есть компонент MSQUERY типо как Адоквери
вопрос  как в этот query записать  код а именно 
проверить
 
Код

                 есть ли (таблица вася_пупкин)  если да то
                  {
                       выполнить инсерт инто
                  }

                  else
                     }
                       если  нет то создать и 
                       выполнить тот же 
                       инсерт инто 
                    
                     }



PM MAIL Skype   Вверх
mrbrooks
Дата 31.8.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Для работы с БД существует контролы аля *Connection - где * - это идентификатор технологии подключения к БД. 
*Connection обладает рядом стандартных методов. GetTableNames(TStrings *, bool) является одним из них. Через него можно получить список таблиц БД. Дальше дело техники.
PM MAIL   Вверх
Данкинг
Дата 31.8.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А почему просто не попытаться сделать "select * from table" и отловить ошибку?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
mrbrooks
Дата 31.8.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



это уже дело техники. я бы предпочел все таки проверку наличия таблицы без генерирования исключительной ситуации.
PM MAIL   Вверх
Данкинг
Дата 31.8.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Ну вообще-то правильно, "GetTableNames" использовать было бы логичней. В общем, я тоже за этот вариант.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
XPyCT
Дата 31.8.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Спс господа кодеры прейду домой попробую и отпишусь!

Добавлено через 50 секунд
Спс господа кодеры прейду домой попробую и отпишусь!
PM MAIL Skype   Вверх
XPyCT
Дата 31.8.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



вроде проверил действительно есть этот метод !

ток я не догоняю как им пользоваться! 
мне нужно проверить есть ли таблица BanUser



MSConnect->GetTableNames("BanUser", bool);
PM MAIL Skype   Вверх
mrbrooks
Дата 31.8.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Код

TStringList *list = new TStringList();
MSConnect->GetTableNames(list, false);
if (list->IndexOf("BanUser") >=0) ShowMessage("Есть таблица BanUser");
else ShowMessage("Нет таблицы BanUser");
delete list;


Добавлено через 5 минут и 51 секунду
можно и так:
Код

TStringList *list = new TStringList();
list->Sorted = true;
MSConnect->GetTableNames(list, false);
int pos = 0;
if (list->Find("BanUser",pos)) ShowMessage("Есть таблица BanUser");
else ShowMessage("Нет таблицы BanUser");
delete list;


Добавлено через 7 минут и 18 секунд
для разнообразия  smile 
Код

TStringList *list = new TStringList();
MSConnect->GetTableNames(list, false);
if (list->IndexOf("BanUser") != -1) ShowMessage("Есть таблица BanUser");
else ShowMessage("Нет таблицы BanUser");
delete list;

PM MAIL   Вверх
XPyCT
Дата 31.8.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Комрад спс! + стоит

Это сообщение отредактировал(а) XPyCT - 31.8.2009, 13:05
PM MAIL Skype   Вверх
Sleuthhound
Дата 1.9.2009, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.9.2008

Репутация: нет
Всего: нет



Обычно наличие таблицы не проверяется, максимум что делается - это запрос на создание таблицы вида

Код

CREATE TABLE IF NOT EXISTS `CONFIG` (
    `config_name` varchar(255) NOT NULL,
    `config_value` varchar(255) NOT NULL,
    PRIMARY KEY (config_name)
) TYPE=MyISAM;


Если такой таблицы нет, то она создасться, если есть то можно выполнить insert
PM MAIL   Вверх
mrbrooks
Дата 1.9.2009, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Sleuthhound @  1.9.2009,  06:08 Найти цитируемый пост)
Обычно наличие таблицы не проверяется, максимум что делается - это запрос на создание таблицы вида

это обычно. в данном случае - задача была частная.
Средства Билдера предоставляют эту возможность. Так почему бы ими не воспользоваться.

Цитата(Sleuthhound @  1.9.2009,  06:08 Найти цитируемый пост)
Если такой таблицы нет, то она создасться, если есть то можно выполнить insert 

зачем это надо, если необходимо только проверка наличия таблицы?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.