Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.22;
Скачать: CL | DM;

Вниз

try...except при коннекции   Найти похожие ветки 

 
Explorer ©   (2002-07-01 13:00) [0]

Мастера!
Подскажите, как мне обработать исключение EDBEngineError в try...except, если, например, не правильно набран логин или пароль при доступе к БД (MSSQL)?


 
Игорь Шевченко ©   (2002-07-01 13:02) [1]

А что надо сделать в случае except ?


 
Skier ©   (2002-07-01 13:10) [2]

>Explorer
Так что ли ?

try
//invalid login or password
except
on EDBEngineError do begin
// твоя реакция на EDBEngineError
//raise - если нужно...
end;
end;


 
Explorer ©   (2002-07-01 14:35) [3]

>Игорь Шевченко ©
Выдать сообщение("Не правильный пароль или логин") и закрыть приложение.

>Skier ©
А вот как проверить, что пользователь ввел не правильный логин или пароль?
Что надо после try... писать?


 
Skier ©   (2002-07-01 14:53) [4]

> Explorer
Не надо проверять.
При неправильном пароле и логине будет генерится
exception - EDBEngineError, и тебе нужно его "взять" на себя,
т.е. нужно написать примерно так :


try
//допустим здесь вводится неправильный пароль или логин
except
on EDBEngineError do
ShowMessage("Не правильный пароль или логин !")
end; //try



 
Игорь Шевченко ©   (2002-07-01 15:18) [5]

Анализировать код ошибки в EDBEngineError надо.

Для Interbase я делал так:


procedure TMainDataModule.DoConnect;
var I, RetryCount : Integer;
IllegalUser : Boolean;
begin
try
RetryCount := 0;
with MainDatabase do
repeat
IllegalUser := false;
if Assigned (Application.MainForm) then
SendMessage( Application.MainForm.Handle, WM_DBCONNECTSTARTED, 0, 0);
if Connected then
Close();
try
Open();
except
on E : EDBEngineError do begin
for I:=0 to Pred(E.ErrorCount) do
with E.Errors[i] do
if ErrorCode=$3303 then begin
IllegalUser := true;
Inc(RetryCount);
ShowMessage(E.Message);
end;
if NOT IllegalUser then
raise;
end;
end;
if RetryCount >= 3 then
raise Exception.Create("Слишком много неверных попыток войти в систему");
until Connected;
except
ShowMessageFmt("Исполнение программы будет завершено: %s",
[(ExceptObject() AS Exception).Message]);
Application.ShowMainForm := false;
Application.Terminate();
end;
end;




Страницы: 1 вся ветка

Текущий архив: 2002.07.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-70611
officeman
2002-06-30 17:41
2002.07.22
(bdase) что за логин и пароль ???


1-70701
and_sp
2002-07-10 10:33
2002.07.22
Мастер


1-70786
Programmer1
2002-07-09 10:44
2002.07.22
Управление сервером автоматизации MSOffice а


8-70832
d.u.k.e
2002-03-07 02:44
2002.07.22
координаты


1-70737
tovSuhov
2002-07-11 17:25
2002.07.22
Переназначение дескрипторов ввода-вывода...