Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1142710002
Volf_555
2006-03-18 22:26
2006.04.23
Как скопировать текст в буффер обмена с минималь. размером файла?


2-1144402787
Lera
2006-04-07 13:39
2006.04.23
Приложения


15-1143799822
Jeer
2006-03-31 14:10
2006.04.23
Мискрософт вот из госструктур !


2-1144747164
pavel_guzhanov
2006-04-11 13:19
2006.04.23
Как можно поменять местами строки в листбоксе?


15-1143698572
LOL :)
2006-03-30 10:02
2006.04.23
Зацените мягкие детские игрушки :)))





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский