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