检查存储过程是否返回值

发布于 2024-10-09 04:41:39 字数 572 浏览 0 评论 0原文

我在 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

I am using Linq 2 Sql in VS 2010, and I have the following stored procedure to check a username and password

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

The problem I'm having is that it throws an exception if the username and password are incorrect. I'd like to perform a check to see if there is a return value, rather than using try/catch to determine whether the procedure returned a value.

Should I do this check in code (C#)? Or is there a way to do it in SQL?

Thanks.

Edit:
Code throwing the exception:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

臻嫒无言 2024-10-16 04:41:39

看起来您只想知道您的用户名和密码组合是否存在(来自存储过程的名称)。
因此,您可能应该执行

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

Which 只会返回具有该组合的记录数。然后在代码中,您可以检查存储过程返回的标量,如果它为 0,则不存在该用户。

It looks like you are only interested to know if your username and password combination exists (from the name of the stored procedure).
So you should probably do

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

Which will just return the count of records with that combination. Then in code, you can check for the scalar returned by the stored procedure and if it's 0, then there is no such user.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文