0

検索ページを作成しようとしています。これにより、管理者は州などの特定の基準でデータベース内のエントリを検索できます (州のようなものですが、国は異なります)。

ここに私がこれまでに持っているコードがあります。問題は、エラーが発生しないことです。しかし、私も結果を得ていません。ページはポスト バックされ、空白の検索ページに戻ります。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: Province) とボタン (id:submit) があります。

私が間違っているところを誰でも見つけることができますか?エラーや結果が得られないときは非常にイライラします:0)

ありがとう!

4

4 に答える 4

1

あなたの変数名は一致しません(Searchvs. strSearch)が、それはタイプミスだと思います。より大きな問題は、一致する文字をパラメーターに入れることで、それらが引用されていることです。それらを SQL ステートメント自体に入れます。

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

...

s = ("SELECT id, surname, name FROM orders WHERE province like '%' + @strSearch + '%'")
于 2010-02-23T12:36:24.173 に答える
1

1)実行中の SQL を調べることをお勧めします。

行 c.Open() にブレークポイントを置きます。そこに着いたら、SqlCommand x を調べます。SELECT ステートメントの最終バージョンを確認してください。これをコピーして Management Studio に貼り付けてから実行し、構文に問題があるかどうかを確認します。

2) また、いくつかのSqlCommand プロパティの入力を試みることもできます。設定しx.CommandType = CommandType.Textます。

3)接続を閉じる直前に、最後に SqlDataReader を閉じて破棄することもお勧めします c. それはこの特定の問題を解決しませんが、良い習慣です。

于 2010-02-23T12:45:31.727 に答える
0

わかった

tvanfossonが親切に指摘した修正を行った後も、まだ問題がありました。

誤って次のように入力しました:strSearch = ProvinceButton.Text.Trim()入力する必要がある場合:strSearch = Province.Text.Trim()

どうもありがとう:0)

于 2010-02-23T12:52:50.667 に答える
-1

これは暗闇の中でのワイルドショットですが、この変数は文字列値であるため、最初の%の前と最後の%の後に目盛りを付ける必要がありますか?

オリジナル:

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

改訂:

Search = ("'%" & ProvinceButton.Text & "%'") 
于 2010-02-23T12:53:03.267 に答える