这个代码类,但给出消息“并非所有路径都返回一个值”

时间:2015-06-08 10:10:32

标签: c#

 public Boolean login(string n1, string n2)
    {
        string checkuser = "select count(*) from userdata where username='" + n1 + "'";
        SqlCommand com = new SqlCommand(checkuser, con);
        int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
        con.Close();
        if (temp == 1)
        {
            con.Open();
            string checkpassword = "select password from userdata where username='" + n1 + "'";
            SqlCommand passcomm = new SqlCommand(checkpassword, con);
            string password = passcomm.ExecuteScalar().ToString().Replace(" ", "");
            if (password == n2) return false;
            else return true;

        }
    }

1 个答案:

答案 0 :(得分:0)

编译器错误消息对我来说似乎很清楚:方法中并非所有可能的代码执行路径最终都会返回一个返回值的语句。

这是不允许的。您已将方法声明为返回类型Boolean的值。如果通过方法执行的流程到达方法的末尾而不执行return语句,编译器应该如何知道该方法应该返回什么值?

您可以通过在方法的末尾添加return语句来修复编译器错误(在if语句的右括号之后,但在方法声明本身的右括号之前)。即return true;return false;

你没有在这里提供足够的信息让任何人知道哪些是正确的,尽管给出了密码"代码的本质,似乎返回false是最安全的。

或者,您可能希望抛出异常而不是返回值,因为如果temp在执行查询后不等于1,则可能意味着您的数据库出现问题。< / p>