2016-07-24 139 views
0

在此代码读取器执行过程中显示“Enumeration未得到任何结果”,并且该方法返回空模型。我不知道什么是错的SqlDataReader枚举未产生任何结果

public UserModel GetUser(string email) 
    { 
     email = email.ToString(); 
     var connection = OpenConnection(); 
     var command = connection.CreateCommand(); 
     command.CommandText = "select * from Users where UserName = @email;"; 
     AddParameterString(command, "@email", email); 
     SqlDataReader reader = command.ExecuteReader(); 
     UserModel model = new UserModel(); 
     while (reader.Read()) 
     { 
      model.ConfirmedEmail = Convert.ToBoolean(reader["ConfirmedEmail"]); 
      model.UserId = int.Parse(reader["userId"].ToString()); 
      model.UserName = reader["UserName"].ToString(); 
      model.UserEmail = reader["UserEmail"].ToString(); 
      model.PasswordHash = reader["PasswordHash"].ToString(); 
      model.PasswordSalt = reader["PasswordSalt"].ToString(); 
      model.UserRole = reader["UserRole"].ToString(); 
     } 
     return model; 
    } 
} 



protected void AddParameterString(SqlCommand command, string parameterName, string value) 
    { 
     var newParameter = command.CreateParameter(); 
     newParameter.ParameterName = parameterName; 
     newParameter.DbType = System.Data.DbType.String; 
     newParameter.Value = value; 
     command.Parameters.Add(newParameter); 
    } 
+0

在'select'语句中显式列出字段名称。有可能是某些名称错误输入。 –

+0

@AlexKudryashev枚举没有得到任何结果意味着读者是空的。 – user3185569

+0

'while(reader.Read())'意味着OP进入内部块并且至少存在一行。 –

回答

0

AddParameterString(命令, “@email”,邮件); //删除此行

command.Parameters.AddWithValue(“@ email”,email); //添加此行