Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отловить ошибки ADO 
V
    Опции темы
Teleport
Дата 16.11.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть бд, сделанная в Access. Как отловить ошибки, возникающие при sql-запросах к ней? 
Код

var
tab_name: string;
begin
...
try
ADOQuery1.Active:= false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('CREATE TABLE ' + tab_name + '(id int NOT NULL PRIMARY KEY , value_my MEMO NOT NULL);');
ADOQuery1.ExecSQL;
except
//тут как отловить ошибку?
  end;


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

Это сообщение отредактировал(а) Teleport - 16.11.2009, 21:08


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Данкинг
Дата 16.11.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Teleport @  16.11.2009,  21:06 Найти цитируемый пост)
Интересует отловить попытку создания таблицы с именем уже существующей таблицы. 

Можно сначала проверить наличие таблицы "обычными" методами, а потом уже запрос делать.




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


Опытный
**


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

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



Данкинг - какими обычными? Как проверить?


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Данкинг
Дата 16.11.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Код

procedure TForm1.Button6Click(Sender: TObject);
var ttt:tstringlist;
begin
ttt:=tstringlist.Create;
connection.GetTableNames(ttt);
.....
ttt.Free;
end;

 smile 


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


MEMS Expert
***


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

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



Teleport, а как на счет try except?
Пардон, не внимательно прочитал пост.

Это сообщение отредактировал(а) former - 16.11.2009, 23:16


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Teleport
Дата 16.11.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Данкинг - вот оно как. Это решение, причем незамороченое. Согласен. Спасибо.
former - а вот как же с try except  отловить, не знаю даже какой класс ошибок возникает. Благодарен буду за ответ. 




--------------------
user posted image
user posted image 
PM MAIL   Вверх
former
Дата 16.11.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


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

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



Цитата(Teleport @  16.11.2009,  21:06 Найти цитируемый пост)
И вообще где прочитать о классификации ошибок, возникающих при запросах к бд. 

Может здесь поискать?


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Данкинг
Дата 16.11.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Teleport, на здоровье. smile А по поводу отлавливания ошибок, возвращаемых СУБД - не знаю, найдёшь - напиши. smile 


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


Опытный
**


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

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



former - ничего путного не удается найти...  smile  


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Deniz
Дата 17.11.2009, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Teleport, посмотри сам, что находится в переменой E в разных ситуациях
Код
try
except
  on E : Exception do begin
    ...
  end;
end;



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Акимыч
Дата 17.11.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Teleport @  16.11.2009,  23:20 Найти цитируемый пост)
какой класс ошибок возникает

Наверно или EADOError или EDatabaseError 
PM MAIL   Вверх
Teleport
Дата 17.11.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Deniz - не понял как увидеть-то что там находится? Через Messages с ошибками? Или как?
Акимыч В DRKB  есть раздел про базы данных, а в нем подраздел - про работу с  ADO. Там в примере находил как отлавливали EDatabaseError. Но EDatabaseError - по-моему совсем не к созданию таблицы относится... Или это какая-то общая ошибка. А нужно конкретно - ошибка создания таблицы с именем уже существующей таблицы. Ведь если я делаю запрос на создание таблицы с существующем уже именем - бд четко и ясно возвращает ошибку - говорит по-русски - таблица уже существует нельзя такую создать. 

 smile 

Это сообщение отредактировал(а) Teleport - 17.11.2009, 19:06


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Акимыч
Дата 18.11.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Teleport @  17.11.2009,  19:01 Найти цитируемый пост)
совсем не к созданию таблицы относится

Верно, все что работает с ADO будет возвращать EOleException, т.к. подключается как ActiveX.
Единственный вариант наверно, это проверять перед созданием есть такая таблица или нет как написал Данкинг
PM MAIL   Вверх
Teleport
Дата 20.11.2009, 15:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Акимыч - Нну да, тоже к такому выводу пришел. Самый простой и доступный способ, как я понял - это вариант, как писал Данкинг. И не надо заморачиваться с поиском ошибок. 

Тему считаю закрытой, спасибо за помощь.  smile  smile 



--------------------
user posted image
user posted image 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




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


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

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