C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как из SQL запроса вернуть результат. и записать .
Monarch
Отправлено: 28.12.2004, 03:40


Не зарегистрирован







Вообщем такая ситуация, есть таблица Firebird в которой есть поля ID, FIO, PASSWD...Пользователь запуская программу получает приглашение с просьбой ввести его пароль в MaskEdit.....Как сравнить пароль введеный в MaskEdit с PASSWD расположенном в табице....и при их совпацении вернуть ID пользователя.
FireBird+Fib+Builder
Заранее благодарен
Monarch
Отправлено: 28.12.2004, 03:44


Не зарегистрирован







Т.е. записать этот ID в переменную
olegenty
Отправлено: 28.12.2004, 07:54


Ветеран

Группа: Модератор
Сообщений: 2412



неверная постановка вопроса: пароль вообще никогда не должен попадать на клиента. ему и на сервере неплохо. пиши ХП, принимающую имя пользователя и пароль, и возвращающую ID пользователя. при этом сама таблица, где хранятся данные о пользователях, должна быть закрытой для всех, кроме SYSDBA, а пароль SYSDBA должен быть отличным от masterkey
Guest
Отправлено: 28.12.2004, 10:39


Не зарегистрирован







идентификация пользователя производится только на основе проля ( там данные не очень важные)....таблица с паролями естественно находится на сервере....пароль вводится с клиента, а сравнивается он со значениями в таблице на сервере....пароли не хешируются, хранятся в открытом виде.
НЕобходим примерно следующие....
SELECT ID FROM TABLE WHERE PASSWD=111
Необходимо вытащить этот ID из SQL запроса....как это сделать в PHP я знаю (да и все тут находящиеся, наверно)....но как это сделать в C++ Builder ...хрен его знает (возрашает только булево значение...мол есть такое) ...помино всех стандартных компонетном есть компонетны fib
Жду ответое...заранее благодарен!
Monarch
Отправлено: 28.12.2004, 10:40


Не зарегистрирован







Это я наверху написал smile.gif
Guest
Отправлено: 28.12.2004, 10:43


Не зарегистрирован







2:olegenty
Что такое ХП ....ХЗ знаю...а это нет!smile.gif biggrin.gif
xim
Отправлено: 28.12.2004, 14:47


Станционный диспетчер

Группа: Участник
Сообщений: 143



ХП — хранимая процедура (она же SP). Вообще-то olegenty вполне ясно объяснил, что правильный вариант пароля на клиента обычно не передаётся, а обрабатывается тот вариант, который набирается в морде ручками.
Синтаксис примерно smile.gif такой:
CODE

CREATE PROC [ EDURE ] [ owner. ] procedure_name [; number ]
   [ { @parameter data_type }
       [ VARYING ] [ = default ] [ OUTPUT ]
   ] [ ,...n ]

[ WITH
   { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]


Что касается получения параметра:
CODE

- в строке SQL на клиенте: SELECT
   :ID FROM TABLE WHERE PASSWD=:PW
- Dataset->Params->ParamByName("ID")=<your ID>;
- Dataset->Params->ParamByName("PW")=111;
Guest
Отправлено: 29.12.2004, 00:04


Не зарегистрирован







А нельзя ли воспользоваться настройкой Database и выбрать там login prompt, а пользователя в самой базе хранить? Тогда на уровне базы можно менять уровень доступа юзера. А приглашение ввода юзера и пароля будет автоматом показываться при загрузке клиента
telepath
Отправлено: 29.12.2004, 00:07


Станционный диспетчер

Группа: Участник
Сообщений: 132



Выше был мой пост, сорри cool.gif
Monarch
Отправлено: 29.12.2004, 01:45


Не зарегистрирован







Спасибо всем, думаю что-нибудь получится.
Заодо и ХП узнал что это такое...почитаю на досуге на эту тему.
Еще раз всем спасибо smile.gif

Вернуться в Работа с базами данных в C++Builder