Вниз
Скачать: CL | DM;

Выуживание ошибки Оракла через BDE   Найти похожие ветки 

 
Iuliy   (2007-03-21 11:19) [0]

Вот собственно проблемный текст, возможно я не так что то делаю:

oracle_connection : TDatabase
log,passwd : String
{.........}
Oracle_connection.Params.Add(passwd);
Oracle_connection.Params.Add(log);
try
oracle_connection.Connected:=true;
{ действия }
except
on E0 : Exception do
begin
ShowMessage(E0.ClassName+" exception "+E0.Message);
end;
end;
{........}

Значения пароля и логина беру из формы. При неправильных значениях получаю всегда одинаковую ошибку: ORA-01012: not logged on
При правильных данных програма работает нормально. Но мне нужно знать точную ошибку оракла, например неверный пароль или учетная запись не существует. Может кто подсказать как ? Заранее благодарю.


 
Reindeer Moss Eater ©   (2007-03-21 11:28) [1]

Никак.
Сам оракл не говорит о том, что именно неверно - логин или пароль.


 
ANB ©   (2007-03-21 11:31) [2]


> Но мне нужно знать точную ошибку оракла, например неверный
> пароль или учетная запись не существует

Дык это спецом сделано для повышения безопасности. Чтобы низзя было по очереди подбирать сначала логин, а потом пароль. И, типа, нефиг. Впрочем, если сильно сильно охота, создай бесправного юзера с грантом на чтение all_users. Тогда сможешь неявно коннектится под ним и проверять правильность логина. Хотя, ИМХО - извращение это.


 
Iuliy   (2007-03-21 12:19) [3]

При залогинивании при помощи PL/SQL developera при аналогичных входных данных я получаю совсем иной результат ORA-01017 ( при неверном логине/пасворде) и приглашение сменить пароль при устаревшем пароле. Мне нужно вставить такое же приглашение в клиент ( по сути вызов PL/SQL процедуры для новых данных, при устаревшем пароле ) но я не могу выловить ситуацию когда он устарел.


 
Reindeer Moss Eater ©   (2007-03-21 12:40) [4]

on E0 : Exception do

Нужно использовать специфичный для bde потомок Exception и его массив ошибок


 
Iuliy   (2007-03-21 13:00) [5]


> on E0 : Exception do
>
> Нужно использовать специфичный для bde потомок Exception
> и его массив ошибок

Сменил Exception на EDBEngineException ничего не поменялось, все тот же ORA - 01012


 
Iuliy   (2007-03-21 18:26) [6]

Усиленно изучаю BDE API, похоже ничего другого не остается


 
Iuliy   (2007-03-22 13:27) [7]

BDE жжет.

Ковырнул низкоуровневые функции и получил тот же едрен батон:

dbires:= DbiOpenDatabase
(  PChar("TEST"),
nil,
dbiReadWrite,
dbiOpenShared,
PChar(passwd0),
1,
@Options,
PChar(log0),
hDB
);

if(dbires<>DBIERR_NONE) then
begin
SetLength(Errstr, DBIMAXMSGLEN);
DbiGetErrorContext(ecNATIVECODE, PChar(Errstr));
SetLength(Errstr, StrLen(PChar(Errstr)));
if (Errstr > "") then
   ShowMessage(format("Error context string: %s",[Errstr]));

И снова имею тот же проклятый ORA-01012



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.019 c
8-1159447397
tmp
2006-09-28 16:43
2007.06.10
DSPack


15-1179297538
IMHO
2007-05-16 10:38
2007.06.10
Сегодня - финал Кубка УЕФА!


15-1178896830
Kerk
2007-05-11 19:20
2007.06.10
Керк в Москве


15-1179324164
GeLLeR
2007-05-16 18:02
2007.06.10
Что-бы такого написать...


15-1178537817
Kolan
2007-05-07 15:36
2007.06.10
А мастер я таки добил :)




   Наверх