2010-12-28 16 views
0

I Linq 2 Sql in VS 2010 verwenden, und ich habe die folgende gespeicherte Prozedur einen Benutzername und ein Passwort zu überprüfenPrüfung Wenn Stored Procedure Rückgabewert

ALTER PROCEDURE dbo.CheckUser 
(
@username varchar(50), 
@password varchar(50) 
) 
AS 
    SELECT * FROM Users Where [email protected] AND [email protected] 

Das Problem, das ich habe ist, dass es ein wirft Ausnahme, wenn der Benutzername und das Passwort falsch sind. Ich möchte eine Überprüfung durchführen, um festzustellen, ob ein Rückgabewert vorhanden ist, anstatt try/catch zu verwenden, um zu ermitteln, ob die Prozedur einen Wert zurückgegeben hat.

Sollte ich diesen Code einchecken (C#)? Oder gibt es eine Möglichkeit, dies in SQL zu tun?

Danke.

Edit: -Code die Ausnahme werfen:

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

Können Sie uns den Code zeigen, mit dem Sie auf die gespeicherte Prozedur zugreifen? Und die Ausnahme? – David

+0

Sicher. Ich werde meinen Beitrag bearbeiten. – Eric

+0

Was ist die Ausnahme? – David

Antwort

1

Es sieht aus wie Sie nur daran interessiert zu wissen, wenn Ihr Benutzername und Passwort-Kombination (aus dem Namen der gespeicherten Prozedur) vorhanden ist. So sollten Sie wahrscheinlich tun

ALTER PROCEDURE dbo.CheckUser 
(
@username varchar(50), 
@password varchar(50) 
) 
AS 
    SELECT count(1) FROM Users Where [email protected] AND [email protected] 

die nur mit dieser Kombination die Anzahl der Datensätze zurück. Dann können Sie im Code nach dem Skalar suchen, der von der gespeicherten Prozedur zurückgegeben wird, und wenn es 0 ist, dann gibt es keinen solchen Benutzer.