我有以下代码:
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
语句中出现。
但是,我返回的结果是没有应用过滤器的完整数据集,就像我在没有指定参数的情况下运行存储过程一样。
任何帮助都会很棒。谢谢!
答案 0 :(得分:2)
尝试指定a Command.Type
...在创建命令对象时设置此项。
cmd.CommandType = CommandType.StoredProcedure
默认情况下,它设置为Text
我相信...还要在Using
语句中包装你的连接和命令,以便在完成后正确处理...