sql-server - SQL Server 到 VB.Net IF EXISTS 需要返回任何内容,但不返回

标签 sql-server vb.net stored-procedures

我有这个:

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

根据我遇到的情况,我需要 SP 返回一些内容,1 或 0,或者 string/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

最佳答案

您应该使用 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)

关于sql-server - SQL Server 到 VB.Net IF EXISTS 需要返回任何内容,但不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174488/

相关文章:

node.js - pg-promise - 程序示例

Visual Studio 中的 SQL 文件编码

SQL 左连接 - 如果 TableB 中两个值都不为 null 或 TableB 中缺少行,则获取值

vb.net - 如何向随机数生成器添加概率

c# - 从我的 stringbuilder 中删除一个字符

mysql - 如何从 VB.NET 和 MySql 8 中的给定记录读取特定列?

c# - 从存储过程返回值并在 C# 中使用它

C# SQL Server 比较日期和字符串

SQL Server : how to know if any row is referencing the row to delete

mysql - 分组依据和列选择