Вниз
Скачать: 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.017 c
15-1179152262
denis24
2007-05-14 18:17
2007.06.10
сохранение настроек IDE


5-1155654550
DevilDevil
2006-08-15 19:09
2007.06.10
ДизайнТайм VS Рантайм


1-1176448717
mid
2007-04-13 11:18
2007.06.10
Экспорт в Excel


2-1179183160
ИгорьЕ
2007-05-15 02:52
2007.06.10
Как изменить яркость у картинки в TImage?


6-1162894543
progmax
2006-11-07 13:15
2007.06.10
статистика TIdHTTPProxyServer




   Наверх