比如我们想做站内搜索,而且这个网站有很多分类,
   我放入一个TextBox控件来写要搜的内容;再放一个DropDownList控件,用来选择搜索的种类;然后后面放一个Button控件来确定搜索.
   如果在页面里面做SqlCommand,那样子是可以实现啊.可是要在代码里面写很多东西,而且可能会不安全.
    所以,我想在SQL里做一个存储过程,然在SqlCommand 代码里面调用这个存储过程,并把参数传到存储过程中.
   这个存储过程是这样写的.    create proc dbo.ProcName
    @SelectValues varchar,
    -- 搜索的内容
    @SelectType varchar,
     --搜索的类型
    @employeeID int
    --返回搜索的ID,在代码隐藏页里面用这个ID在选择DataGrid控件里面显示搜索东西的详细内容.
    to
    select @employeeID=employeeID
    from northwind
    where @SelectType='%@SelectValues%'  我想问的是在代码隐藏页里面传这些参数给它,或者说怎么实现.

解决方案 »

  1.   

    在后置代码或中间层类库里连数据库,往存储过程里传参数DBClass里面放的都是前台页面和后台数据库中间的函数    Public Function Userlist(ByVal UID As Integer, ByVal tmpTab As String) As DataTable
            mySql = "select * from Users where UID=" & UID & ""
            Return ExecDataSet(mySql, tmpTab).Tables(tmpTab)
        End Function
        Public Function Userlogin(ByVal Username As String, ByVal Userpass As String) As Integer
            Dim returnID As Integer
            Dim myCmd As SqlCommand = New SqlCommand("UserLogin", myConn)
            myCmd.CommandType = CommandType.StoredProcedure        myCmd.Parameters.Add("@Username", SqlDbType.VarChar, 50).Value = Username
            myCmd.Parameters.Add("@Userpass", SqlDbType.VarChar, 50).Value = Userpass        myCmd.Parameters.Add("@ID", SqlDbType.Int)
            myCmd.Parameters("@ID").Direction = ParameterDirection.Output        myConn.Open()
            myCmd.ExecuteNonQuery()
            myConn.Close()        returnID = myCmd.Parameters("@ID").Value
            Return returnID
        End Functionaspx.vb:dim xx as new dbclass
    dim tmptab as datatable=xx.Userlist(dropdownlist1.selectvalue,"tmptable")
      

  2.   

    这样的需求可以直接传递参数与like匹配