C# 员工按姓名搜索

本文关键字:搜索 | 更新日期: 2023-09-27 17:55:42

我正在为我的 C# 类做这个作业:员工搜索 创建一个连接到您在编程问题 1 中创建的 Personnel.mdf 数据库的应用程序。应用程序的窗体应在 DataGridView 控件中显示"雇员"表。应用程序应允许用户在文本框中指定名称,然后在 Employee 表中搜索该名称。应用程序应显示包含指定名称的完全匹配或部分匹配的任何行。

我在让应用程序显示包含与指定名称完全或部分匹配的任何行时遇到问题。

以下是我的 SQL SELECT 语句:

SELECT EmployeeID, Name, Position, [Hourly Pay Rate] 
FROM Employee 
WHERE Name LIKE '%' + @name + '%' 

这是我的表单中搜索按钮的代码:

 private void searchButton_Click(object sender, EventArgs e)
        {
            this.employeeTableAdapter.NameSearch
                (this.personnelDataSet.Employee, searchNameTextBox.Text);
        }

例如,在我的表格中,我有米歇尔·威尔科克斯和迈克尔·格里森,当我在应用程序的文本框中输入 Mich 并单击搜索时,我没有返回任何值。我希望在表中看到这两行。另外,如果我只输入名字,迈克尔,什么都不会返回。我唯一返回该行的时间是输入确切的全名。

关于我应该在哪里纠正程序的任何建议?

C# 员工按姓名搜索

我会在后端查看SQL Server使用的排序规则,更多信息在这里 - https://support.microsoft.com/en-us/kb/322112

我提出这个问题的原因是"LIKE 比较受排序规则的影响",正如这里讨论的那样 - https://msdn.microsoft.com/en-us/library/ms179859.aspx

将您的 SELECT 语句更改为以下内容可能会证明这一点:

SELECT EmployeeID, Name, Position, [Hourly Pay Rate] 
FROM Employee WHERE Name 
LIKE '%' + @name + '%'
 OR LIKE @name + '%'