检查存储过程是否返回值

时间:2010-12-28 23:47:38

标签: c# linq-to-sql error-handling

我在VS 2010中使用Linq 2 Sql,我有以下存储过程来检查用户名和密码

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 个答案:

答案 0 :(得分:1)

看起来您只想知道您的用户名和密码组合是否存在(来自存储过程的名称)。 所以你应该这样做

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

这将返回具有该组合的记录数。然后在代码中,您可以检查存储过程返回的标量,如果它是0,那么就没有这样的用户。