Проверьте, возвращает ли хранимая процедура значение - PullRequest
0 голосов
/ 29 декабря 2010

Я использую Linq 2 Sql в VS 2010, и у меня есть следующая хранимая процедура для проверки имени пользователя и пароля

ALTER PROCEDURE dbo.CheckUser
(
@username varchar(50),
@password varchar(50)
)
AS
  SELECT * FROM Users Where UserName=@username AND Password=@password

Проблема, с которой я столкнулся, заключается в том, что она выдает исключение, если имя пользователяи пароль неверный.Я хотел бы выполнить проверку, чтобы увидеть, есть ли возвращаемое значение, вместо использования try / catch, чтобы определить, вернула ли процедура значение.

Должен ли я выполнить эту проверку в коде (C #)?Или есть способ сделать это в SQL?

Спасибо.

Редактировать: Код, выбрасывающий исключение:

MyDatabaseDataContext db = new MyDatabaseDataContext();
String username = "username";
String password = "password";
User u = db.CheckUser(username, password); // Exception

1 Ответ

1 голос
/ 29 декабря 2010

Похоже, вас интересует только то, существует ли ваша комбинация имени пользователя и пароля (из названия хранимой процедуры).Поэтому вам, вероятно, следует выполнить команду

ALTER PROCEDURE dbo.CheckUser
(
@username varchar(50),
@password varchar(50)
)
AS
  SELECT count(1) FROM Users Where UserName=@username AND Password=@password

, которая будет просто возвращать количество записей с этой комбинацией.Затем в коде вы можете проверить скаляр, возвращаемый хранимой процедурой, и если он равен 0, то такого пользователя нет.

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