【发布时间】:2017-11-03 16:31:06
【问题描述】:
列employee_id、last_name、first_name、reporting_to、official_start_time、employee_status、dept_name
Private Sub btnSearch_Click(sender As Object, e As EventArgs) 处理 btnSearch.Click
Dim strSELECT As String =
"SELECT * FROM [TABLENAME]WHERE last_name LIKE '"
& tbxLastName.Text.ToString()
& "%' AND first_name LIKE'" & tbxFirstName.Text.ToString() & "%' AND reporting_to LIKE '"
& tbxReportingTo.Text
& "%' AND employee_status = '"
& cbxEmpStatus.Items(cbxEmpStatus.SelectedIndex) & "'AND dept_name ='"
& cbxDeptName.Items(cbxDeptName.SelectedIndex).ToString &"';"
End Sub
通过单击按钮搜索,我想用输入项过滤我的数据。
我遇到的问题是,如果我将一个文本框留空,则查询无法解决此问题。下面我将放一个有人建议的示例代码,但我不知道如何实现它。
Public Function ReadRecords(ByVal strTblName As String,
ByVal strColumns As String,
ByVal strFilter As String,
ByVal strSortOrder As String) As DataTable
Dim dtRecords As New DataTable
Dim strSQL As String
If strColumns = String.Empty Then
strSQL = "SELECT * FROM " + strTblName
Else
strSQL = "SELECT " & strColumns & " FROM " + strTblName
End If
If strFilter <> String.Empty Then
strSQL = strSQL + " WHERE " + strFilter
End If
If strSortOrder <> String.Empty Then
strSQL = strSQL + " ORDER BY " + strSortOrder
End If
dtRecords = ExecQuery(strSQL)
Return dtRecords
End Function
下面我有一张示例数据库的图片[不要介意其中的列名] 我希望能够过滤例如所有包含 IT 作为部门的记录,同时还搜索姓氏的第一个字母假设W 所以我的查询的输出应该是员工 100 William ETC...
【问题讨论】:
-
2 个语言标签都不正确,缺少正确的一个?
-
这需要使用命令/参数对象来完成,目前你有SQL注入漏洞
标签: c# sql-server vba