Форум: "Базы";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизВыуживание ошибки Оракла через 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.087 c