我在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
答案 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,那么就没有这样的用户。