我正在尝试创建一个搜索页面,这允许管理员按照某些标准搜索数据库中的条目,例如省(如州但差异国家)
这是我到目前为止的代码。问题是我没有收到任何错误。但我也没有得到任何结果。该页面只是回发并返回空白搜索页面。 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)
谢谢!
答案 0 :(得分:1)
您的变量名称不匹配(Search
与strSearch
),但我怀疑这是一个错字。更大的问题是,通过在参数中放置匹配的字符,它们被引用。将它们放在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 & "%'")