Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示记录是按名称查找还是按EmpID查找_C#_Sql_Sql Server_Winforms_Ado.net - Fatal编程技术网

C# 显示记录是按名称查找还是按EmpID查找

C# 显示记录是按名称查找还是按EmpID查找,c#,sql,sql-server,winforms,ado.net,C#,Sql,Sql Server,Winforms,Ado.net,样本数据库 using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString)) { myDatabaseConnection.Open(); using (SqlCommand mySqlCommand = new SqlCommand("Select EmpID, Name from Employee WHERE EmpID = @EmpID OR

样本数据库

using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
{
    myDatabaseConnection.Open();
    using (SqlCommand mySqlCommand = new SqlCommand("Select EmpID, Name from Employee WHERE EmpID = @EmpID OR Name = @Name ", myDatabaseConnection))
    {
        mySqlCommand.Parameters.AddWithValue("@EmpID", textBox1.text);
        mySqlCommand.Parameters.AddWithValue("@Name", textBox1.text);
        DataSet ds = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter(mySqlCommand);
        adapter.Fill(ds);
        dataGridView1.DataSource = ds.Tables[0];  
    }
}
当我在文本框1上键入4001时,这就是结果

EmpID          Name
4001           Johnny Bravo
4002           Bruce Smith
4003           Vince Walker
EmpID          Name
4001           Johnny Bravo
当我在文本框1上键入Bruce Smith时,这就是结果

EmpID          Name
4001           Johnny Bravo
4002           Bruce Smith
4003           Vince Walker
EmpID          Name
4001           Johnny Bravo

我需要的是显示记录是按EmpID还是按名称查找的。例如,我键入4003,文本框或标签等类似于“记录由EmpID找到”。当我输入文斯·沃克时,会像“记录是按名字找到的”

在Abe Miessler的回答中添加一个快速提示->使用参数化查询:

EmpID          Name
4002           Bruce Smith

它可以保护您不受SQL注入的影响,并且作为一种奖励,您可以得到正确的值解析。

首先,您有一个SQL注入漏洞需要修复。应该让您开始使用参数化查询

其次,您可以在查询中插入case语句来指示匹配的值。例如:

using (var mySqlCommand = new SqlCommand("Select EmpID, Name from Employee WHERE EmpID = @EmpID OR Name = @Name", myDatabaseConnection))
{
    mySqlCommand.Parameters.AddWithValue("@EmpID", textBox1.text);
    // etc..
}

你可能想使用SQL参数,否则你很容易受到SQL注入的攻击。哦!这是漫长的一天:)是的,完全可以,这应该有用:)+1,伙计