如何在 vb.net、SQL Server 中为多个搜索制作代码

Posted

技术标签:

【中文标题】如何在 vb.net、SQL Server 中为多个搜索制作代码【英文标题】:How make code for multiple search at the time in vb.net, SQL Server 【发布时间】:2021-02-21 07:33:17 【问题描述】:

在过去的三个月里,我致力于在 vb.net 中创建单个搜索代码的代码,但我需要帮助才能同时进行多个搜索,例如:- 我使用 vb.net 在数据库中搜索已经完成,但随后我需要搜索 shart + red olor 也完成了,然后我需要搜索 shart + red color + brand + style 等等。

我的主要问题是我搜索多个 any,我需要 shart + red color + brand + style 正式,所以我该怎么做。建议我...检查 img 以获得更好的理解

search multiple at time

我的单条搜索码:

 Private Sub loadsearch_product_article(ByVal records As String)
    Try
        conn.Open()
        TabControl1.SelectedTab = TabPage2
        Dim cmd As New SqlCommand("select * from purchase_item_table2 where artical_no like '%" & txtPR_artical_no.Text & "%'", conn)
        Dim sdr As SqlDataReader = cmd.ExecuteReader()
        DataGridView1.Rows.Clear()
        While sdr.Read()

           DataGridView1.Rows.Add(sdr(0), sdr(1), sdr(2), sdr(3), sdr(4), sdr(7), sdr(8), sdr(9), sdr(10), sdr(11), sdr(12), sdr(13), sdr(14), sdr(15), sdr(16), sdr(17), sdr(18), sdr(19), sdr(21), sdr(22), sdr(23), sdr(24), sdr(25), sdr(26), sdr(27), sdr(28), sdr(29), sdr(30), sdr(31))
        End While
        conn.Close()
    Catch ex As Exception
        MsgBox(ex.Message)
        conn.Close()
    End Try

End Sub

【问题讨论】:

什么或谁是 shart ?' SQL Injection alert - 您应该将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables 【参考方案1】:

下面是一个查询示例,可让您使用零个、一个或多个参数进行搜索:

Dim sql = "SELECT *
FROM MyTable
WHERE (@Column1 IS NULL OR Column1 = @Column1)
AND (@Column2 IS NULL OR Column2 = @Column2)
AND (@Column3 IS NULL OR Column3 = @Column3)"

Dim command As New SqlCommand(sql, connection)

With command.Parameters
    .Add("@Column1", SqlDbType.VarChar, 50).Value = If(TextBox1.TextLength = 0, CObj(DBNull.Value), TextBox1.Text)
    .Add("@Column2", SqlDbType.VarChar, 50).Value = If(TextBox2.TextLength = 0, CObj(DBNull.Value), TextBox2.Text)
    .Add("@Column3", SqlDbType.VarChar, 50).Value = If(TextBox3.TextLength = 0, CObj(DBNull.Value), TextBox3.Text)
End With

如果参数设置为 NULL,则 @ColumnN IS NULL 部分为真,并且该组条件匹配每条记录并被有效忽略,否则 ColumnN = @ColumnN 部分将仅匹配适当的记录。

编辑:

作为记录,当我在过去发布这样的示例时已经指出,数据库每次都会使用相同的执行计划,因此对于某些查询可能有些低效。如果这对您来说是个问题,您应该考虑根据具体情况动态构建 SQL。

【讨论】:

非常感谢您的回复,在将此代码应用到项目后,它可以完美运行。 非常感谢您的回复,在将此代码应用于项目后,它的完美工作。我已经关注你了,我还有更多疑问。??谢谢

以上是关于如何在 vb.net、SQL Server 中为多个搜索制作代码的主要内容,如果未能解决你的问题,请参考以下文章

在 VB.NET 中从 SQL Server 执行存储过程?

如何使用 vb.net 将 excel 文件导入 sql server

如何在 SQL Server 表中创建图像列并使用 VB 在 ASP.NET 中检索它

如何检查 vb .net 项目的 sql server 中是不是存在数据库和表?

使用 C#/VB.NET 实现 SQL Server Profiler

如何使用 vb.net 和 SQL Server 裁剪和调整图像大小