2016-12-15 48 views
2

我有这样的:SQL Server以VB.Net IF EXISTS需要返回任何东西,但不

IF EXISTS 
    (SELECT 1 
    FROM User_Passwords 
    WHERE up_Password = @CurrentPassword) 
    PRINT 'Bad Password' 
    --RETURN TRUE 
ELSE 

从我快到,我需要我的SP返回的东西,一个1或0或字符串/ varchar,所以我可以在VB端做一些工作。但是现在,它不会返回任何东西,除非我没有正确地调用它。这是VB代码:

Public Function UpdatePasswords() 

    Dim objCommand As New SqlCommand("Update_Passwords", DatabaseInterface_.Connection) 
    objCommand.CommandType = CommandType.StoredProcedure 
    objCommand.Parameters.AddWithValue("@ua_pk", ua_pk_) 
    objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@ResetDaysAmount", .SqlDbType = SqlDbType.Int, .Value = Company.GetSetting("PasswordExpireDays", SettingMisc.ReturnDataType.Integer_)}) 
    objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@AllowedNumberOfPasswords", .SqlDbType = SqlDbType.Int, .Value = Company.GetSetting("NumberOfPasswords", SettingMisc.ReturnDataType.Integer_)}) 
    objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@CurrentPasswordDate", .SqlDbType = SqlDbType.Date, .Value = ua_PasswordDate_}) 
    objCommand.Parameters.Add(New SqlParameter With {.ParameterName = "@CurrentPassword", .SqlDbType = SqlDbType.VarChar, .Value = ua_Password_}) 

    If objCommand.ExecuteScalar.ToString() = "Bad Password" Or 1 Then 
     Return True 
    Else 
     Return False 
    End If 

End Function 
+0

而不是做一个存在,你可以做它在一个电话,而不是做存在,然后做一个选择.... – Codexer

+0

你是什么意思? –

回答

2

你应该使用SELECT语句返回的东西到你的代码

IF EXISTS (SELECT 1 FROM User_Passwords WHERE up_Password = @CurrentPassword) 
    SELECT 1 
ELSE 
    SELECT 0 

然后你的代码是

Dim result = Convert.ToInt32(objCommand.ExecuteScalar()) 
Return If(result = 1, True, False) 
+0

我越来越沮丧。我无法思考。谢谢!你救了我的大脑和愤怒 –

+0

这不像我所希望的那样工作。当Currentpassword =表中的任何密码时,它不会返回1。 –

+0

我已经更新了这个问题 –