【问题标题】:Search multiple results from database and display in single textbox从数据库中搜索多个结果并显示在单个文本框中
【发布时间】:2013-10-04 16:25:35
【问题描述】:

伙计们,我想在 vb 中构建一个高效的搜索工具,以从我存储了一些信息段落的 mysql 数据库中搜索数据。我希望搜索像谷歌一样返回多个结果,但在文本框中以相同概念的 2-3 段形式返回。此外,为了使搜索更有效,我想在选择中包含子字符串功能,即 % 符号询问。谁能告诉我如何实现这两个功能?这是我的基本搜索代码,它只将存储在表格中的单个段落返回到我的结果文本框中,我首先隐藏它,然后在结果出现时显示。

 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

【问题讨论】:

  • 你问如何在一个文本框中显示多个结果?这只是txtResults.Text &= mydata.Item("text"),因为您循环遍历结果(似乎没有实现多个返回的循环)。关于子字符串和 %,我不遵循您想要的,抱歉
  • 对于子字符串,我的意思是我必须输入确切的关键字才能从数据库中搜索,所以为了消除这个问题,我需要一个查询来搜索子字符串,这样用户就不必输入确切的数据库中存在的关键字

标签: vb.net


【解决方案1】:

您自己已经回答了一个问题 - 如何进行子字符串搜索,只需在查询中添加 %:

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

(理想情况下,您可以使用parametrized query,而不是在线提供搜索值,这将有助于避免SQL Injection

至于第二部分 - 您已经在使用 DataReader,您所要做的就是使用单个 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 class,这是一种连接多个字符串的有效方法。

附:使用后不要忘记关闭 DataReader 和 Connection。

【讨论】:

  • 非常感谢它现在起作用了唯一的问题是我如何在这些段落之间添加空格,因为它们都排成一行,所以无法区分哪个是哪个?我也可以使用相同的代码在图片框中重新输入多张图像吗?你能提前帮忙吗?谢谢
  • 是的,您可以添加一个额外的空间,只需在真实的之后添加一个空的sb.AppendLine() 命令。您可以使用类似的代码返回多张图片,但由于单个图片框只能显示一张图片 - 您必须动态创建图片框,将它们添加到表单并在循环中填充图片。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2015-12-16
  • 2011-03-01
  • 1970-01-01
  • 2016-02-06
  • 2014-03-27
  • 2011-02-14
相关资源
最近更新 更多