Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Коннект к базе IB   Найти похожие ветки 

 
Hadroran   (2006-03-01 17:58) [0]

Помогите реализовать коннект к базе данных с вводом логина, пароля и роли.
Есть предложенный код на других форумах:

 IBTransaction.Active:=true;
 IBSQL.SQL.Clear;
 IBSQL.SQL.Add("select rdb$relation_name from rdb$user_privileges where rdb$privilege = ""M"" and rdb$user = :username;");
 IBSQL.ExecQuery;
 Role:=IBSQL.Fields[0].AsString;
 IBSQL.Close;

Но значение Role - полная пурга.


 
Desdechado ©   (2006-03-01 18:03) [1]

вообще-то роль вводят, потом с ней подключаются
а не читают невесть что из БД

и вообще, вопрос коду не соответсвует в принципе


 
Hadroran   (2006-03-01 18:18) [2]

Мля, вводят куда, подключаются к чему? (смайликов чета у меня нет)
Вот сначала вошли, наверное так. А подключаюсь к базе, но надо роль юзера узнать, а как?

 IBDatabase.Connected:=false;
 IBDatabase.Params.Clear;
 IBDatabase.Params.Append("user_name="+FormGlava.LoginUs);
 IBDatabase.Params.Append("password="+FormGlava.PassUs);
 IBDatabase.DatabaseName:=FormGlava.ServerName+":"+FormGlava.BaseName;
   try
    IBDatabase.Connected:=true;
   except
    exit;
   end;
 IBTransaction.Active:=true;
 IBSQL.SQL.Clear;
 IBSQL.SQL.Add("select rdb$relation_name from rdb$user_privileges where rdb$privilege = ""M"" and rdb$user = :username;");
 IBSQL.ExecQuery;
 Role:=IBSQL.Fields[0].AsString;
 IBSQL.Close;


 
Desdechado ©   (2006-03-01 18:49) [3]

еще раз, роль юзера должна быть известна заранее, как логин и пароль

возможны варианты, но тогда нужно переподключаться
подробности см. на ibase.ru


 
Johnmen ©   (2006-03-01 21:08) [4]

Сплошная пурга.
И насчёт применения IBSQL, и насчет ExecQuery....

Просто интересно, на каких других форумах так гонят?
:)


 
Hadroran   (2006-03-02 09:29) [5]


> Сплошная пурга.

Помогите от пурги уйти. Как сконнектиться с базой вводя логин, пароль и роль. На пальцах в принципе понятно. Есть как бы два варианта.
1. Пользователь заранее знает свою роль и подключаясь указывает ее.
2. При помощи запроса

rdb$relation_name from rdb$user_privileges where rdb$privilege = ""M"" and rdb$user = :username;

на сдадии коннекта вводим логин-пароль затем узнаем роль пользователя, делаем дисконнект, затем снова коннект логин-пароль-роль.

Вот последнее или первое помогите в код перевести. Ну не доходит ум мой до этого. :)


 
Hadroran   (2006-03-02 09:57) [6]

Парни не поверите
IBDatabase.Params.Clear;
IBDatabase.Params.Append("user_name="+FormGlava.LoginUs);
IBDatabase.Params.Append("password="+FormGlava.PassUs);
IBDatabase.Params.Append("sql_role=роль");


 
Johnmen ©   (2006-03-02 09:59) [7]

Ну ты колумб...:)


 
Виталий Панасенко   (2006-03-02 10:08) [8]


> Hadroran   (02.03.06 09:57) [6]
> Парни не поверите
> IBDatabase.Params.Clear;
> IBDatabase.Params.Append("user_name="+FormGlava.LoginUs);
>
> IBDatabase.Params.Append("password="+FormGlava.PassUs);
> IBDatabase.Params.Append("sql_role=роль");

А если правой кнопкой кликнуть на IBDataBase, можно выбрать Database Editor и там все красиво указать по полям ввода...Т.е. Params заполнить визуально..:-)


 
Hadroran   (2006-03-02 15:52) [9]


> 2. При помощи запроса
> select rdb$relation_name from rdb$user_privileges where rdb$privilege
> = ""M"" and rdb$user = :username;
> на сдадии коннекта вводим логин-пароль затем узнаем роль
> пользователя, делаем дисконнект, затем снова коннект логин-
> пароль-роль


И все-таки если использовать этот вариант при исполнении данного запроса выводится ошибка "типа неизвестный пользователь". Ессссстественно вместо :username вводим пользователя прописанного в базе. Если же данный запрос написан в процедуре

BEGIN
 FOR
   select rdb$relation_name
   from rdb$user_privileges
   where rdb$privilege = "M" and rdb$user = :username
   INTO :RDB$RELATION_NAME
 DO
 BEGIN
   SUSPEND;
 END
END

и права на ее выполнения даны данному пользователю, то результат RDB$RELATION_NAME равняется NULL, хотя при отладке процедуры на сервере все получается.


 
Hadroran   (2006-03-02 16:23) [10]

Все навиг вопрос снимаю. Пользователя забыл взять в одинарные кавычки.



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

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

Наверх




Память: 0.49 MB
Время: 0.191 c
2-1144313131
Der Nechk@ssoff
2006-04-06 12:45
2006.04.23
Он существует или нет?


15-1144155918
Джо
2006-04-04 17:05
2006.04.23
Ограничение доступа к Интету для выбранных локальных уч. записей


2-1144185516
ValliGRoB
2006-04-05 01:18
2006.04.23
OpenFile


2-1144658573
Рафик
2006-04-10 12:42
2006.04.23
Работа с ADO


15-1143647617
Сатир
2006-03-29 19:53
2006.04.23
DAX Error