Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Коннект к базе IB [D6, IB6.x]


Hadroran ©   (2006-03-01 17:58:00) 

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

 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 - полная пурга.


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

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


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


> 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, хотя при отладке процедуры на сервере все получается.


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


> 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 заполнить визуально..:-)


Johnmen   (2006-03-02 09:59:00) [4]

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


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

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


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


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

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

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

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

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


Johnmen   (2006-03-01 21:08:00) [7]

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

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


Desdechado   (2006-03-01 18:49:00) [8]

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

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


Hadroran   (2006-03-01 18:18:00) [9]

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

 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:03:00) [10]

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо