2010-02-23 3 views
0

Я пытаюсь создать страницу поиска, это позволяет администратору производить поиск по записям в базе данных по определенным критериям, например, провинции (как государство, но получить различия страны)поиск базы данных возврат результатов в GridView через 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: отправить)

Может кто-нибудь место, где я я ошибаюсь. Это очень расстраивает, когда вы не получаете ошибок или результатов: 0)

Спасибо!

ответ

1

Ваши имена переменных не совпадают (Search против strSearch), но я подозреваю, что это опечатка. Большая проблема заключается в том, что, помещая совпадающие символы в параметр, они цитируются. Поместите их в сам SQL-оператор.

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

... 

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

мой плохой поиск/strsearch фактически являются опечатками. Я пойду на перемещение соответствующих символов в SQL.Большое спасибо за помощь. – Phil

+0

И вы можете обрезать свой вход (как я добавил к примеру, хотя вам может потребоваться сначала проверить значение null, не помните, с моей точки зрения, если возвращается пустое текстовое поле null или string.Empty). – tvanfosson

+0

Большое спасибо, ваше решение было очень полезно, и код теперь работает! – Phil

1

1) Я хотел бы предложить вам изучить SQL, который выполняется.

Установить точку останова на линии c.Open(). Когда вы доберетесь туда, изучите SqlCommand x. Посмотрите, какова конечная версия инструкции SELECT. Скопируйте и вставьте его в Management Studio, затем запустите его, чтобы увидеть, есть ли проблема синтаксиса.

2) Вы также можете попробовать заполнить некоторые из свойств SqlCommand. Установите x.CommandType = CommandType.Text.

3) Я также предлагаю вам Закрыть и удалить SqlDataReader в конце, прямо перед тем, как закрыть соединение c. Это не решит эту проблему, но это хорошая практика.

+0

Большое спасибо за помощь, я поправлю и начну Dispose в будущем. – Phil

0

OK

После того, как я сделал загладить любезно указал tvanfosson я до сих пор были проблемы;

я случайно напечатал: strSearch = ProvinceButton.Text.Trim() Когда я должен был набран: strSearch = Province.Text.Trim()

Спасибо большое: 0)

-1

Это дикий выстрел в темноте, но должна ли эта переменная иметь отметки перед первым% и после последнего%, так как это строковое значение?

Оригинал:

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

После доработки:

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

Мне удалось решить это с ответом выше, но спасибо за помощь в любом случае Yoav, очень ценю. – Phil

Смежные вопросы