none
Recuperar o valor de um campo no SqlDataReader RRS feed

  • Pergunta

  • Pessoal, sou iniciante em VS 2008, desenvolvo uma aplicaçao WEB em C# e estou tendo a seguinte dificudade, faço uma consulta e queria retornar o valor de um determinado campo, que nesse caso é descriçao, como poderia fazer isso...

    segue abaixo o codigo, no retorno da funçao e que quero retonar a string do valor contindo no campo descriçao da consulta

    public string PesquisaDescricao(TimeSheet PesquisaTimeSheetWeb)
            {
                if (PesquisaTimeSheetWeb != null)
                {
                    conexao = PesquisaTimeSheetWeb._Conn;
    
                    this.conexao.Open();
    
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = PesquisaTimeSheetWeb._Conn;
                    cmd.CommandText = "Select * From TipoAtividade Where CodigoTipoAtividade = @TipoAtividade";
                    cmd.Parameters.Add("@TipoAtividade", SqlDbType.VarChar);
                    cmd.Parameters["@TipoAtividade"].Value = PesquisaTimeSheetWeb._CodigoTipoAtividade;
                    SqlDataReader reader = cmd.ExecuteReader();
                    bool btResultado = reader.HasRows;
                    reader.Close();
    
                    this.conexao.Close();
    
                    if (btResultado)
                    {
                        return "Devo Retornar a Descrição aqui...";
                    }
                    else
                    {
                        return "Layout da Descrição não cadastrado";
                    }
                }
                return "";
            }
    aonde tem a linha : return "Devo Retornar a Descrição aqui..."; é que eu quero retornar o valor contido no campo descricao
    segunda-feira, 28 de setembro de 2009 17:19

Respostas

  • string descricao="";
    public string PesquisaDescricao(TimeSheet PesquisaTimeSheetWeb)
            {
                if (PesquisaTimeSheetWeb != null)
                {
                    conexao = PesquisaTimeSheetWeb._Conn;

                    this.conexao.Open();

                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = PesquisaTimeSheetWeb._Conn;
                    cmd.CommandText = "Select * From TipoAtividade Where CodigoTipoAtividade = @TipoAtividade";
                    cmd.Parameters.Add("@TipoAtividade", SqlDbType.VarChar);
                    cmd.Parameters["@TipoAtividade"].Value = PesquisaTimeSheetWeb._CodigoTipoAtividade;
                    SqlDataReader reader = cmd.ExecuteReader();

                   while(reader.read())
                   {
                        descricao = reader["campoDescricao"].toString();
                   }

    //Se tiver dados a serem lidos, vai entrar no while e o que estiver contido no campo descrição da sua consulta irá ser atribuido a variavel descrição.

     

    • Sugerido como Resposta Harley Araujo quarta-feira, 30 de setembro de 2009 14:05
    • Marcado como Resposta Harley Araujo segunda-feira, 5 de outubro de 2009 17:05
    segunda-feira, 28 de setembro de 2009 17:40

Todas as Respostas

  • Um objeto da Classe data reader tem a vantagem sobre o objeto datatable no que diz respeito a velocidade, porém seu problema é precisar ter uma conexão ativa.

    No seu caso você terá que fechar a conexão depois de exibir o resultado

    public string PesquisaDescricao(TimeSheet PesquisaTimeSheetWeb)
            {
                if (PesquisaTimeSheetWeb != null)
                {
                    conexao = PesquisaTimeSheetWeb._Conn;
    
                    this.conexao.Open();
    
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = PesquisaTimeSheetWeb._Conn;
                    cmd.CommandText = "Select * From TipoAtividade Where CodigoTipoAtividade = @TipoAtividade";
                    cmd.Parameters.Add("@TipoAtividade", SqlDbType.VarChar);
                    cmd.Parameters["@TipoAtividade"].Value = PesquisaTimeSheetWeb._CodigoTipoAtividade;
                    SqlDataReader reader = cmd.ExecuteReader();
                    bool btResultado = reader.HasRows;
                    
                    if (btResultado)
                    {
                        return reader("Descricao");
                    }
                    else
                    {
                        return "Layout da Descrição não cadastrado";
                    }
    reader.Close(); this.conexao.Close(); } return ""; }

    Alan
    • Editado Alan Cossari quarta-feira, 27 de janeiro de 2010 11:33
    segunda-feira, 28 de setembro de 2009 17:31
  • string descricao="";
    public string PesquisaDescricao(TimeSheet PesquisaTimeSheetWeb)
            {
                if (PesquisaTimeSheetWeb != null)
                {
                    conexao = PesquisaTimeSheetWeb._Conn;

                    this.conexao.Open();

                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = PesquisaTimeSheetWeb._Conn;
                    cmd.CommandText = "Select * From TipoAtividade Where CodigoTipoAtividade = @TipoAtividade";
                    cmd.Parameters.Add("@TipoAtividade", SqlDbType.VarChar);
                    cmd.Parameters["@TipoAtividade"].Value = PesquisaTimeSheetWeb._CodigoTipoAtividade;
                    SqlDataReader reader = cmd.ExecuteReader();

                   while(reader.read())
                   {
                        descricao = reader["campoDescricao"].toString();
                   }

    //Se tiver dados a serem lidos, vai entrar no while e o que estiver contido no campo descrição da sua consulta irá ser atribuido a variavel descrição.

     

    • Sugerido como Resposta Harley Araujo quarta-feira, 30 de setembro de 2009 14:05
    • Marcado como Resposta Harley Araujo segunda-feira, 5 de outubro de 2009 17:05
    segunda-feira, 28 de setembro de 2009 17:40
  • neste caso na hora que rodo a aplicação ele apresenta o seguinte erro:

    tentativa invalida de leitura qd nao exisste dados, porem os dados existem na tabela... segue abaixo o codigo

    public string PesquisaDescricao(TimeSheet PesquisaTimeSheetWeb)
            {
                if (PesquisaTimeSheetWeb != null)
                {
                    conexao = PesquisaTimeSheetWeb._Conn;
    
                    string descricao = "";
    
                    this.conexao.Open();
    
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = PesquisaTimeSheetWeb._Conn;
                    cmd.CommandText = "Select * From TipoAtividade Where CodigoTipoAtividade = @TipoAtividade";
                    cmd.Parameters.Add("@TipoAtividade", SqlDbType.VarChar);
                    cmd.Parameters["@TipoAtividade"].Value = PesquisaTimeSheetWeb._CodigoTipoAtividade;
                    SqlDataReader reader = cmd.ExecuteReader();
                    bool btResultado = reader.HasRows;
    
                    if (btResultado)
                    {
                        descricao = reader["Descricao"].ToString();
                        return descricao;
                    }
                    else
                    {
                        return "Layout da Descrição não cadastrado";
                    }
    
                    reader.Close();
                    this.conexao.Close();
                }
                return "";
            }
    segunda-feira, 28 de setembro de 2009 17:52
  • neste caso na hora que rodo a aplicação ele apresenta o seguinte erro:

    tentativa invalida de leitura qd nao exisste dados, porem os dados existem na tabela... segue abaixo o codigo

    public string PesquisaDescricao(TimeSheet PesquisaTimeSheetWeb)
            {
                if (PesquisaTimeSheetWeb != null)
                {
                    conexao = PesquisaTimeSheetWeb._Conn;
    
                    string descricao = "";
    
                    this.conexao.Open();
    
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = PesquisaTimeSheetWeb._Conn;
                    cmd.CommandText = "Select * From TipoAtividade Where CodigoTipoAtividade = @TipoAtividade";
                    cmd.Parameters.Add("@TipoAtividade", SqlDbType.VarChar);
                    cmd.Parameters["@TipoAtividade"].Value = PesquisaTimeSheetWeb._CodigoTipoAtividade;
                    SqlDataReader reader = cmd.ExecuteReader();
                    bool btResultado = reader.HasRows;
    
                    if (btResultado)
                    {
                        descricao = reader["Descricao"].ToString();
                        return descricao;
                    }
                    else
                    {
                        return "Layout da Descrição não cadastrado";
                    }
    
                    reader.Close();
                    this.conexao.Close();
                }
                return "";
            }
    
    segunda-feira, 28 de setembro de 2009 18:17
  • Bom dia Wagner.

    Tente seguindo o exemplo do JrCesar modificando somente as colunas que serão trazidas ao invéz do *.

    string descricao="";
    public string PesquisaDescricao(TimeSheet PesquisaTimeSheetWeb)
            {
                if (PesquisaTimeSheetWeb != null)
                {
                    conexao = PesquisaTimeSheetWeb._Conn;
    
                    this.conexao.Open();
    
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = PesquisaTimeSheetWeb._Conn;
                    cmd.CommandText = "Select Descricao From TipoAtividade Where CodigoTipoAtividade = @TipoAtividade";
                    cmd.Parameters.Add("@TipoAtividade", SqlDbType.VarChar);
                    cmd.Parameters["@TipoAtividade"].Value = PesquisaTimeSheetWeb._CodigoTipoAtividade;
                    SqlDataReader reader = cmd.ExecuteReader();
    
                   while(reader.read())
                   {
                        descricao = reader[0].toString();
                   }


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    Atenciosamente,
    Harley Araujo
    • Sugerido como Resposta Harley Araujo quarta-feira, 30 de setembro de 2009 14:04
    • Marcado como Resposta Harley Araujo segunda-feira, 5 de outubro de 2009 17:05
    • Não Marcado como Resposta Wagner Sena PE segunda-feira, 5 de outubro de 2009 17:08
    quarta-feira, 30 de setembro de 2009 14:04