我写了下面的代码...但是我收到如下错误:
错误 1“LoginDLL.Class1.Login(string, string, string)”:并非所有代码路径都返回值
请帮帮我...
提前致谢...
我的代码如下...
public int Login(string connectionString,string username,string password)
{
SqlConnection con=new SqlConnection(connectionString);
con.Open();
SqlCommand validUser = new SqlCommand("SELECT count(*) from USER where username=@username", con);
validUser.Parameters.AddWithValue("@username", username);
int value=Convert.ToInt32(validUser.ExecuteScalar().ToString());
if (value == 1)
{
//check for password
SqlCommand validPassword = new SqlCommand("SELECT password from USER where username=@username", con);
validPassword.Parameters.AddWithValue("@username", username);
string pass = validPassword.ExecuteScalar().ToString();
if (pass == password)
{
//valid login
return 1;
}
else
{
return 0;
}
}
else if (value == 0)
{
return 2;
}
}
最佳答案
如果 value == 3
会怎样?
你可以这样重写代码:
public LoginResult Login(string connectionString, string username, string password)
{
if (string.IsNullOrEmpty(username)
{
return LoginResult.InvalidUser;
}
else if (string.IsNullOrEmpty(password)
{
return LoginResult.InvalidPassword;
}
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = "SELECT password from USER where username=@username";
command.Parameters.AddWithValue("@username", username);
var actualPassword = (string)command.ExecuteScalar();
if (actualPassword == null)
{
return LoginResult.InvalidUser;
}
else if (password != actualPassword)
{
return LoginResult.InvalidPassword;
}
else
{
return LoginResult.Success;
}
}
}
}
public enum LoginResult
{
Success,
InvalidPassword,
InvalidUser
}
关于c# - 为什么这个代码块说 "not all code paths return a value"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484623/