Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.10;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.018 c
4-1168027163
Tack
2007-01-05 22:59
2007.06.10
Как отловить момент смены цветового оформления Windows?


15-1179219626
Rule
2007-05-15 13:00
2007.06.10
Открыл для себя новую альтернативу жабы


2-1179834805
IgorMish
2007-05-22 15:53
2007.06.10
Как записать картинку в Paradox


3-1174296643
fd979
2007-03-19 12:30
2007.06.10
Получение пароля пользователя в MS SQL Server?


15-1178740607
lookin
2007-05-09 23:56
2007.06.10
Пароль от аськи