public List <Paciente> Consultar(Paciente pFiltro) { List <Paciente> retorno = new List <Paciente>(); try { AbrirConexao(); //instrucao a ser executada String sqlQuery = "SELECT CPF" + " ,NOME" + " ,TELEFONE" + " ,DATANASCIMENTO" + " ,COALESCE (CIDADE, '') AS CIDADE" + " ,COALESCE (ESTADO, '') AS ESTADO" + " ,COALESCE (COMPLEMENTO, '') AS COMPLEMENTO" + " ,COALESCE (LOGRADOURO, '') AS LOGRADOURO" + " ,COALESCE (NUMERO, 0) AS NUMERO" + " ,COALESCE (BAIRRO, '') AS BAIRRO" + " ,COALESCE (CEP, 0) AS CEP" + " ,COALESCE (SEXO, '') AS SEXO" + " FROM PACIENTE" + " WHERE NOME LIKE @NOME" + " AND CPF LIKE @CPF"; SqlCommand cmd = new SqlCommand(sqlQuery, SqlConn); cmd.Parameters.Add("@NOME", SqlDbType.VarChar).Value = "%" + pFiltro.Nome + "%"; if (0L.Equals(pFiltro.Cpf)) { cmd.Parameters.Add("@CPF", SqlDbType.VarChar).Value = "%%"; } else { cmd.Parameters.Add("@CPF", SqlDbType.VarChar).Value = "%" + pFiltro.Cpf + "%"; } //executando a instrucao e colocando o resultado em um leitor SqlDataReader DbReader = cmd.ExecuteReader(); //lendo o resultado da consulta while (DbReader.Read()) { Paciente paciente = new Paciente { //acessando os valores das colunas do resultado Nome = DbReader.GetString(DbReader.GetOrdinal("NOME")), Cpf = DbReader.GetInt64(DbReader.GetOrdinal("CPF")), Telefone = DbReader.GetInt64(DbReader.GetOrdinal("TELEFONE")), Date = DbReader.GetDateTime(DbReader.GetOrdinal("DATANASCIMENTO")), Cidade = DbReader.GetString(DbReader.GetOrdinal("CIDADE")), Estado = DbReader.GetString(DbReader.GetOrdinal("ESTADO")), Complemento = DbReader.GetString(DbReader.GetOrdinal("COMPLEMENTO")), Logradouro = DbReader.GetString(DbReader.GetOrdinal("LOGRADOURO")), Numero = DbReader.GetInt64(DbReader.GetOrdinal("NUMERO")), Bairro = DbReader.GetString(DbReader.GetOrdinal("BAIRRO")), Cep = DbReader.GetInt64(DbReader.GetOrdinal("CEP")) }; int sexo = DbReader.GetInt32(DbReader.GetOrdinal("SEXO")); paciente.Sexo = SiteUtil.ConverterParaTipoEnum <Sexo> (sexo); retorno.Add(paciente); } //fechando o leitor de resultados DbReader.Close(); //liberando a memoria cmd.Dispose(); //fechando a conexao FecharConexao(); } catch (InvalidCastException Ex) { throw new Exception("Erro ao consultar dados do paciente\n" + Ex.Message); } catch (SqlException Ex) { throw new Exception("Erro ao consultar dados do paciente\n" + Ex.Message); } catch (IOException Ex) { throw new Exception("Erro ao consultar dados do paciente\n" + Ex.Message); } catch (InvalidOperationException Ex) { throw new Exception("Erro ao consultar dados do paciente\n" + Ex.Message); } finally { FecharConexao(); } return(retorno); }