コード例 #1
0
        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);
        }