搜索数据库通过sqldatareader将结果返回到gridview

时间:2010-02-23 12:33:05

标签: asp.net search ado.net syntax sqldatareader

我正在尝试创建一个搜索页面,这允许管理员按照某些标准搜索数据库中的条目,例如省(如州但差异国家)

这是我到目前为止的代码。问题是我没有收到任何错误。但我也没有得到任何结果。该页面只是回发并返回空白搜索页面。 GridView不显示任何结果。

这是我的代码:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Configuration
Partial Class administration_Search
    Inherits System.Web.UI.Page

    Protected Sub ProvinceButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ProvinceButton.Click
        'get the search string from text box
        Dim Search As String
        Search = ("%" & ProvinceButton.Text & "%")
        'if the string has value then continue with search
        If Len(Trim(Search)) > 0 Then
            Dim con As String = WebConfigurationManager.ConnectionStrings("fubar").ToString()
            'build sql string 
            Dim s As String
            s = ("SELECT id, surname, name FROM orders WHERE province like @strSearch")
            'declar connection
            Dim c As SqlConnection = New SqlConnection(con)
            'add command
            Dim x As New SqlCommand(s, c)
            'add parameter
            x.Parameters.AddWithValue("@strSearch", strSearch)
            c.Open()
            Dim r As SqlDataReader = x.ExecuteReader
            GV.DataSource = r
            GV.DataBind()
            c.Close()
        Else
            Province.Text = ("Please enter search terms")
        End If
    End Sub
End Class

在.aspx页面上我有一个文本框(id:省)和一个按钮(id:submit)

任何人都可以找到我错的地方。当你没有得到错误或结果时非常令人沮丧:0)

谢谢!

4 个答案:

答案 0 :(得分:1)

您的变量名称不匹配(SearchstrSearch),但我怀疑这是一个错字。更大的问题是,通过在参数中放置匹配的字符,它们被引用。将它们放在SQL语句本身中。

Dim strSearch As String
strSearch = ProvinceButton.Text.Trim()

...

s = ("SELECT id, surname, name FROM orders WHERE province like '%' + @strSearch + '%'")

答案 1 :(得分:1)

1)我建议您检查正在执行的SQL

在c.Open()行放置一个断点。当你到达那里,检查SqlCommand x。查看SELECT语句的最终版本。将其复制并粘贴到Management Studio中,然后运行它以查看是否存在语法问题。

2)您也可以尝试填充一些 SqlCommand属性。设置x.CommandType = CommandType.Text

3)我还建议您在关闭Connection c之前,在结尾处关闭并处置 SqlDataReader。这不会解决这个特殊问题,但这是一个很好的做法。

答案 2 :(得分:0)

一旦我做了tvanfosson友善指出的修正,我仍然有问题;

我不小心输入了:strSearch = ProvinceButton.Text.Trim() 当我输入时:strSearch = Province.Text.Trim()

非常感谢:0)

答案 3 :(得分:-1)

在黑暗中这是一个疯狂的镜头,但这个变量是否需要在第一个%之前和最后一个%之后有刻度标记,因为它是一个字符串值?

原件:

Search = ("%" & ProvinceButton.Text & "%") 

修:

Search = ("'%" & ProvinceButton.Text & "%'")