-1

ワイルドカードクエリを使用してグリッドビューに行を表示しようとしていますが、目標に達していません...

protected void Button1_Click(object sender, EventArgs e)
{
    SqlCommand com = new SqlCommand("select * from Alphabates where Word 
                     like'"+TextBox1.Text+"'", new SqlConnection("data source=
                     USER\\SQLEXPRESS;initial catalog=vicky;integrated 
                     security=true"));

    try
    {
        com.Connection.Open();
        GridView1.DataSource = com.ExecuteReader();
        GridView1.DataBind();
        com.Connection.Close();
        com.Connection.Dispose();
    }
    catch (SqlException ex)
    {
        Label1.Text = ex.Message;
    }
}
4

2 に答える 2

2

これを試して:

クエリを変更して、テキストボックスの値の前後に%を追加します

ワイルドカード検索では、目的の結果を取得するために%記号が必要です。それ以外の場合は、等号(=)を使用するのと同じです。

"select * from Alphabates where Word like %'"+TextBox1.Text+"%'"

あなたのコメントによると、与えられた単語で始まる行が必要な場合は:

"select * from Alphabates where Word like '"+TextBox1.Text+"%'"

元:

select * from Alphabates where Word like 'Some value'

と同じです

select * from Alphabates where Word ='Some value'

したがって、次のように変更する必要があります

select * from Alphabates where Word like '%Some value%'
于 2012-08-25T03:28:03.667 に答える
0

SQLインジェクションに注意してください。

テキスト値の前後に%を追加してから、文字列を使用して作成するのではなく、パラメータ化されたSQLを使用して実行する必要があります。あらゆる種類の巧妙なSQLを利用できます。

ここの例を見てください:

http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html

于 2012-08-25T03:59:02.590 に答える