从SqlDataReader中检索值并传递给switch或if语句

时间:2017-05-04 04:06:56

标签: c# sql-server switch-statement sqldatareader

我在将SqlDataReader对象的值传递给switch语句时遇到问题 - 或者其他任何问题。缺少的是我正在从员工表中读取列,显示他们的角色。为了向他们展示适当的工具,我需要知道他们的角色是什么。当我按下开关时,rec为空。

using (SqlCommand readEmployeeRecords = con.CreateCommand()) {
    readEmployeeRecords.CommandText = "select * from dbo.Employee where employeeID = @employeeID and password = @password;";
    var empID = new SqlParameter("employeeID", employeeID);
    var pass = new SqlParameter("password", password);
    readEmployeeRecords.Parameters.Add(empID);
    readEmployeeRecords.Parameters.Add(pass);

    using (SqlDataReader reader = readEmployeeRecords.ExecuteReader()) {
        string rec = "";

        while (reader.Read()) {
            rec = reader.GetString(5);
        }

        switch (rec) {
           case "Busboy":
               BusboyForm bus = new BusboyForm();
               bus.Show();
               break;

           case "Waiter":
               WaiterForm wait = new WaiterForm();
               wait.Show();
               break;
       }
}

1 个答案:

答案 0 :(得分:0)

我没有足够的代表发表评论,所以答案就足够了。

根据您提供的代码,rec在到达您的switch语句时仍会包含该值。

案例区分大小写,您确定'Busboy'在表格中而不是'BusBoy'吗?此外,您的表格是否在字符串中返回了额外的空格,即'BusBoy '

听起来你正在触及switch语句的default情况,因此无法获得预期的行为。