2

みんな私は、vb で効率的な検索ツールを構築して、いくつかの情報の段落を保存した mysql のデータベースからデータを検索したいと考えています。Googleのように検索で複数の結果が返されるようにしたいのですが、同じ概念の2〜3段落の形式のテキストボックスで検索します。また、検索をより効率的にするために、選択に%記号である部分文字列機能を含めたいですクエリ。これら2つの機能を実装する方法を誰か教えてもらえますか? これは、テーブルに保存されている単一の段落を結果テキスト ボックスに返す基本的な検索コードです。最初に非表示にしてから、結果が表示されたときに表示します。

 If TextBox1.Text = "" Then
        MsgBox("Please Enter a Keyword")
    Else

        Dim conn As MySqlConnection
        conn = New MySqlConnection
        conn.ConnectionString = "Server=localhost;UserID=root;Password=admin674;Database=db1"
        Dim myadapter As New MySqlDataAdapter
        conn.Open()
        Dim sqlquery = "select text from text where name like '" & TextBox1.Text & "'"
        Dim mycommand As New MySqlCommand
        mycommand.Connection = conn
        mycommand.CommandText = sqlquery
        myadapter.SelectCommand = mycommand
        Dim mydata As MySqlDataReader
        mydata = mycommand.ExecuteReader
        If mydata.HasRows = 0 Then
            MsgBox("Data Not Found")
            TextBox1.Clear()
            TextBox2.Clear()

        Else
            mydata.Read()
            TextBox2.Text = mydata.Item("text")
            TextBox2.Show()


        End If
4

1 に答える 1

1

あなたはすでに1つの質問に自分で答えました-部分文字列検索を行う方法、単純にクエリに % を追加します:

Dim sqlquery = "select text from text where name like '%" & TextBox1.Text & "%'"

(理想的には、検索値をインラインで提供する代わりに、パラメーター化されたクエリを使用します。これは、とりわけSQL インジェクションの回避に役立ちます。

2 番目の部分については、既に DataReader を使用していますが、代わりに 1 つのmydata.Read()コマンドを使用するだけで、すべての結果をループ処理できます。交換

mydata.Read()
TextBox2.Text = mydata.Item("text")
TextBox2.Show()

Dim sb as New StringBuilder()

While mydata.Read()
   sb.AppendLine(mydata("text"))
End While

TextBox2.Text = sb.ToString()
TextBox2.Show()

このアプローチでは、複数の文字列を連結する効率的な方法であるStringBuilder クラスを使用します。

PS 使用後は DataReader と Connection を閉じることを忘れないでください。

于 2013-10-04T17:58:22.137 に答える