Выполните итерацию по набору строк, получите поле, соответствующее параметру, а затем другое поле из этой строки - PullRequest
0 голосов
/ 31 марта 2009

У меня есть хранимая процедура, которая должна получить пароль из моей таблицы Users.

Я использую имя пользователя в качестве параметра. Как лучше всего получить строку, в которой содержимое поля «Имя пользователя» соответствует параметру «Имя пользователя», а затем пароль (поскольку это пара «Имя пользователя / пароль» для одного пользователя).

Курсоры - это один из способов перебора набора строк, но это нежелательно.

В настоящее время я читаю несколько книг по TSQL, но не сталкивался с подобными проблемами. Любые хорошие рекомендации для книг TSQL? Я на Sql Server 2005.

Ответы [ 4 ]

1 голос
/ 31 марта 2009

получить пароль из моей таблицы пользователей

Это ваша первая проблема: НИКОГДА хранить реальные пароли в базе данных. Посмотрите на функцию HashBytes () и используйте ее для сопоставления пароля. Если вы думаете, что вам нужно сохранить реальный пароль, возможно, чтобы позволить пользователям восстановить утерянные пароли, поговорите с людьми по адресу reddit .

способ перебора набора строк

Это ваша вторая проблема. Вы мыслите в терминах итерации по строкам самостоятельно. Это называется императивным программированием. Хотя императивный код отлично работает для вашего обычного клиентского кода, он работает в обратном направлении, когда вы работаете с базой данных. Вместо этого вы хотите начать использовать декларативное программирование и думать с точки зрения наборов: вы пишете некоторый код, который объявляет базе данных набор возвращаемых вам записей:

SELECT [password] /*shudder*/ FROM [table] WHERE [username] = @username
1 голос
/ 31 марта 2009

Похоже, вам просто нужен стандартный SELECT запрос:

SELECT username_column, password_column
FROM your_table
WHERE username_column = @usernameparam

(Или я неправильно понял вопрос?)

0 голосов
/ 31 марта 2009

Если в вашей таблице пользователей есть столбцы UserName и Password, тогда SELECT будет работать нормально.

ВЫБЕРИТЕ имя пользователя, пароль от пользователей, ГДЕ имя пользователя = @ имя пользователя

Однако хранение паролей таким способом может быть не самой лучшей идеей в плане безопасности.

0 голосов
/ 31 марта 2009

ВЫБРАТЬ пароль ОТ Таблица ГДЕ username = @ username

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...