База данных поиска, возвращающая результаты в gridview через sqldatareader - PullRequest
0 голосов
/ 23 февраля 2010

Я пытаюсь создать страницу поиска, это позволяет администратору искать записи в базе данных по определенным критериям, таким как провинция (например, штат, но другая страна)

Вот код, который у меня есть. Проблема в том, что я не получаю никаких ошибок. Но я также не получаю никаких результатов. Страница просто отправляет назад и возвращается на пустую страницу поиска. 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 ]

1 голос
/ 23 февраля 2010

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

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

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

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

1 голос
/ 23 февраля 2010

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

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

...

s = ("SELECT id, surname, name FROM orders WHERE province like '%' + @strSearch + '%'")
0 голосов
/ 23 февраля 2010

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

Оригинал:

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

Исправленный вариант:

Search = ("'%" & ProvinceButton.Text & "%'") 
0 голосов
/ 23 февраля 2010

OK

Как только я сделал поправки, любезно указанные tvanfosson, у меня все еще были проблемы;

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...