VB.NET - 存储过程运行但参数不起作用

时间:2016-04-07 15:00:51

标签: sql sql-server vb.net stored-procedures

我有以下代码:

Dim SQLCon As New SqlConnection
Dim cmd As New SqlCommand
Dim ds As New DataSet

SQLCon.ConnectionString = ConfigurationSettings.AppSettings("myConnString")
SQLCon.Open()
cmd.CommandType = CommandType.StoredProcedure

'run the stored procedure based on the view selected
If rdolstView.Items(0).Selected Then
    cmd = New SqlCommand("spCondensedView", SQLCon)
ElseIf rdolstView.Items(1).Selected Then
    cmd = New SqlCommand("spExtendedView", SQLCon)
End If

'filter by what the user searched for
If ddlSearchBy.SelectedValue = "Member" Then
    cmd.Parameters.AddWithValue("@MbrNum", txtSearchFor.Text)
ElseIf ddlSearchBy.SelectedValue = "Assistant" Then
    cmd.Parameters.AddWithValue("@AssignedAsst", ddlUWAssistants.SelectedValue)
ElseIf ddlSearchBy.SelectedValue = "Rep" Then
    cmd.Parameters.AddWithValue("@Rep", txtSearchFor.Text)
ElseIf ddlSearchBy.SelectedValue = "Dept Assistant" Then
    cmd.Parameters.AddWithValue("@DeptAsst", txtSearchFor.Text)
ElseIf ddlSearchBy.SelectedValue = "Creator" Then
    cmd.Parameters.AddWithValue("@Creator", txtSearchFor.Text)
End If

Dim da As New SqlDataAdapter(cmd)
da.Fill(ds)
SQLCon.Close()

我的问题是参数似乎不起作用。两个存储过程都应该使用可选参数(@MbrNum@AssignedAsst@Rep@DeptAsst@Creator)并在其{中过滤} {1}}条款。

我在SQL Server Management Studio中手动运行存储过程时,确认此操作正常。我还确认WHERE / If语句正确验证为真。因此,我的代码肯定会在ElseIf语句中出现。

但是,我返回的结果是没有应用过滤器的完整数据集,就像我在没有指定参数的情况下运行存储过程一样。

任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:2)

尝试指定a Command.Type ...在创建命令对象时设置此项。

 cmd.CommandType = CommandType.StoredProcedure

默认情况下,它设置为Text我相信...还要在Using语句中包装你的连接和命令,以便在完成后正确处理...