2016-12-15 47 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

我已經更新了這個問題 –