在过去的三个月里,我在vb.net中创建了一个单一的搜索代码,但我需要帮助来进行多个搜索,例如:-我使用vb.net在数据库中搜索是完成的,但然后我需要搜索shart +红色颜色也做了,然后我需要搜索shart +红色颜色+品牌+风格和更多。
我的主要问题是我搜索多个任何,我需要shart +红色+品牌+风格正式,所以我怎么做呢?建议我..。查看img以更好地了解
我的单一搜索代码:
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发布于 2021-02-21 15:54:25
以下是允许您使用零个、一个或多个参数进行搜索的查询示例:
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部件为true,并且该条件集匹配每条记录并被有效地忽略,否则ColumnN = @ColumnN部件将只匹配适当的记录。
编辑:
作为记录,当我在过去发布了一个类似这样的示例时,我已经指出,数据库每次都会使用相同的执行计划,因此对于某些查询来说,效率可能会有点低。如果这对您来说是一个问题,那么您应该考虑在逐个案例的基础上动态构建SQL。
https://stackoverflow.com/questions/66300101
复制相似问题