sind Ich schreibe gerade eine sichere Anmeldung für eine VB.net-Anwendung, die ich erstelle. Die Anmeldeverifizierung wird über eine gespeicherte Prozedur auf dem SQL Server (2008 R2) ausgeführt. Ich brauche das Verfahren zur Überprüfung des Benutzernamens und des Passworts. Dann kick die Login-Nachricht (@responsesemessage) und die (@AccessLevel) zurück, damit ich feststellen kann, welches Formular als nächstes (Admin oder User) in meinem VB-Skript geöffnet wird.NULL erhalten, wenn Daten in Spalte
Hier ist das Verfahren I
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @UUID INT
DECLARE @ResponseMessage NVARCHAR(250)
DECLARE @AccessLevel VARCHAR(1)
BEGIN
IF (SELECT UUID from logins where [email protected] AND PassHash=HASHBYTES('MD5', @pPassword))
SET @UUID=(Select UUID FROM logins where [email protected] AND PassHash=HASHBYTES('MD5', @pPassword))
SET @AccessLevel=(Select SecLevel FROM logins where [email protected] AND PassHash=HASHBYTES('MD5', @pPassword))
SET @ResponseMessage=(SELECT statdesc from statuscodes where StatID='2')
End
ELSE
Begin
SET @ResponseMessage=(SELECT statdesc from statuscodes where StatID='3')
Select @ResponseMessage as 'Result', @AccessLevel as 'AccessLevel'
END Select @ResponseMessage als 'Ergebnis', @AccessLevel als 'Access' End
bisher habe Wenn ich einen Benutzernamen und ein Passwort eingeben, das ist In der Logins-Tabelle bekomme ich die korrekte Login-Nachricht, aber meine AccessLevel-Spalte kommt als NULL zurück. Die Variablen werden von einer VB.net-Winform, die ich gebaut habe, eingespeist.
Was passiert, wenn Sie SELECT für die Zugriffsebene direkt in SQL Server ausführen? Erhalten Sie einen Wert zurück? –
@TimBiegeleisen Ja, ich bekomme den richtigen Wert zurück, wenn ich die Select-Abfrage ausführen. Aber wenn als Teil der gespeicherten Prozedur ausgeführt. Es tritt null zurück. –