sql - 如何在 vb.net 中搜索多个字段名称以过滤搜索 datagridview
问题描述
这是我的代码
da = New OleDbDataAdapter("select * from additem where productname like '%" & TextBox1.Text & "%'", con)
我想添加字段名“价格”、“状态”、“类别”和“状态”
如何将这些添加到我的代码中?
解决方案
该WHERE
子句是一个布尔表达式。您通常如何创建复合布尔表达式?就像你在学校的数学课上学到的一样:使用 AND 和 OR 运算符。它与 VB 代码中的布尔表达式没有什么不同,例如
WHERE productname LIKE '%' + @SearchText + '%' OR category LIKE '%' + @SearchText + '%'
请注意,我已经写了使用参数,你也应该这样做。但是,根据您的提供者,您可能无法在多个地方使用一个参数,因此您必须创建具有相同值的多个参数,例如
Dim sql = "SELECT *
FROM additem
WHERE productname LIKE '%' + @productname + '%'
OR category LIKE '%' + @category + '%'"
Dim command As New OleDbCommand(sql, connection)
With command.Parameters
.Add("@productname", OleDbType.VarChar, 50).Value = TextBox1.Text
.Add("@category", OleDbType.VarChar, 50).Value = TextBox1.Text
End With
另请注意,该运算符仅适用于文本值,因此搜索以相同方式LIKE
命名的列可能没有意义。price
您可以在 SQL 代码中将价格转换为文本,但对货币值进行部分搜索真的有意义吗?我倾向于检查搜索文本是否实际上是一个数字,如果是,则专门搜索该值,例如
Dim sql = "SELECT *
FROM additem
WHERE productname LIKE '%' + @productname + '%'
OR category LIKE '%' + @category + '%'
OR (@price1 IS NOT NULL AND price = @price2)"
Dim command As New OleDbCommand(sql, connection)
With command.Parameters
.Add("@productname", OleDbType.VarChar, 50).Value = TextBox1.Text
.Add("@category", OleDbType.VarChar, 50).Value = TextBox1.Text
Dim price1Parameter = .Add("@price1", OleDbType.Currency)
Dim price21Parameter = .Add("@price2", OleDbType.Currency)
Dim price As Decimal
If Decimal.TryParse(TextBox1.Text, price) Then
price1Parameter.Value = price
price2Parameter.Value = price
Else
price1Parameter.Value = DBNull.Value
price2Parameter.Value = DBNull.Value
End If
End With
如果您不能在多个地方使用相同的参数,那么您需要两个参数 for price
,因为您需要进行两次检查。要么两个参数都是,要么NULL
都包含相同的数字。如果它们都是,NULL
那么最后一个复合条件不匹配任何记录,否则它将只匹配包含该数字的记录。
推荐阅读
- python - Django 数据库关系 - TypeError: 'ManyToOneRel' 对象不可迭代
- vba - 删除按钮上方的单行但不允许删除,如果
- python - 403 gmail api与python的权限不足
- c# - WPF 和棱镜:单选按钮选择在多个用户控件上消失
- selenium - 硒表计数
- java - 如何处理浏览器弹出窗口(使用 Selenium WebDriver)?
- python - 如何使用 Paramiko getfo 将文件从 SFTP 服务器下载到内存进行处理
- python - uwsgi+flask 启动|停止 python 守护进程
- r - 具有外生变量的 VAR 模型在 Shiny 中不起作用
- spring - Spring:允许缺少数据库连接