Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
1-70717
Yuri Btr
2002-07-11 12:44
2002.07.22
Размер переменных в памяти


1-70795
AlexAlex
2002-07-10 12:30
2002.07.22
Как получить имя выбранного (с путем) файла в TShellListView?


3-70672
Ptr
2002-07-02 14:03
2002.07.22
TSQLClientDataSet


1-70696
ripp
2002-07-11 02:49
2002.07.22
Помогите разобратся с WinExec ом


3-70615
Dmitr
2002-06-28 09:31
2002.07.22
Что влияет на PDOXUSRS.LCK ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский