2016-07-24 84 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); //添加此行