SQL Server to VB.Net IF EXISTS needs to return anything, but doesn't

匿名 (未验证) 提交于 2019-12-03 01:01:02

问题:

I have this:

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

From what I'm running into, I need my SP to return something, a 1 or 0, or a string/varchar, so I can do some work on the VB side. But as of right now, it's not returning anything, unless I'm not calling it correctly. This is the VB code:

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

回答1:

You should return something to your code using the SELECT statement

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

And then your code is

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!