我已经将一些逻辑写入了一个 sproc,它返回 1 或 0 表示真/假。如果我手动运行它会很好,但是如果我从 VB 调用它,我总是得到 0/false,不管 sproc 返回的实际值是什么。可能错过了一些愚蠢的东西,但我只是没有看到它。该代码部分地从我们系统中的其他代码复制而来,这些代码可以正常工作,但使用动态构造的 sproc 调用。我正在尝试修改该代码以使用参数化的 sproc 调用。
sproc 返回名为“Allowed”的列中的值。
VB 代码(针对变量名称/内容进行了复制和清理)如下所示:
Public Function sample(ByVal parm1 As String, ByVal parm2 As String) As Boolean
Dim Allowed As Boolean = False
Try
Dim MyConnection As New SqlConnection(ConnString)
Dim MyDataAdapter As New SqlDataAdapter("sproc", MyConnection)
Dim DS As New DataSet
MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@parm1", SqlDbType.Char, 14))
MyDataAdapter.SelectCommand.Parameters("@parm1").Value = parm1
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@parm2", SqlDbType.Char, 30))
MyDataAdapter.SelectCommand.Parameters("@parm2").Value = parm2.ToUpper()
MyDataAdapter.Fill(DS)
If DS.Tables.Count > 0 Then
If DS.Tables(0).Rows.Count > 0 Then
Allowed = Convert.ToBoolean(DS.Tables(0).Rows(0).Item("Allowed"))
End If
End If
Catch ex As Exception
' Real code has error handling here that's not getting hit
End Try
Return Allowed
End Function