none
problema para retornar datatable em um metodo de uma classe RRS feed

  • Pergunta

  • Olá
    tenho uma classe que tem um método para dar um select, jogar no dataadapter e depois no datatable
    e no final quero que return o datatable pra min igualar a um datagridview e ter o resultado da pesquisa
    meu código está assim

      class ConsultarLivro
        {
            SqlConnection con = new SqlConnection("Integrated Security=SSPI; Persist Security Info=False; User ID=sa; Password=scan123*;Initial Catalog=livraria; Data Source=localhost");
            SqlCommand cmd;
            SqlDataReader reader;
        
            public void procuralivro() {
    
                SqlDataAdapter da;
                DataTable dt = new DataTable();
                    
        con.Open();
        cmd = new SqlCommand("select * from livros where nomelivro = ('" + txtpesquisar.text + "')");
        cmd.Connection = con;
    
         da.SelectCommand = cmd;
    
         da.Fill(dt);
    
            
            con.Close();
            return dt;
            
            }
        }

    mas tá dando um tao de erro "returns void a return keyword must not be followed by an object expression"
    no "return dt"
    alguém sabe como resolvo isso?
    fiz isso em vb.net funcionou
    mas no c# não estou conseguindo.

    sexta-feira, 13 de dezembro de 2013 17:04

Respostas

  • Cria um parâmetro no seu método e passa ela para a variável n :

    namespace Biblioteca
    {
        class ConsultarLivro
        {
            SqlConnection con = new SqlConnection("Integrated Security=SSPI; Persist Security Info=False; User ID=sa; Password=scan123*;Initial Catalog=livraria; Data Source=localhost");
            SqlCommand cmd;
            SqlDataReader reader;
    
    
            public DataTable procuralivro(String ValorPesquisa)
            {
    
                SqlDataAdapter da = new SqlDataAdapter();
                DataTable dt = new DataTable();
                string n;
                n = ValorPesquisa;
                con.Open();
                cmd = new SqlCommand("select * from livros where nomelivro = ('" + n + "')");
                cmd.Connection = con;
    
                da.SelectCommand = cmd;
    
                da.Fill(dt);
    
    
                con.Close();
                return dt;
    
            }
        }
    }

    ai na hora de Chamar o metodo procuralivro vc faz assim :

    procuralivro(txtpesquisar.text);
    tenta ver se isso funciona !!!!!



    Diego Almeida Barreto
    System Analyst / Software Developer

    • Marcado como Resposta Rods Leal segunda-feira, 16 de dezembro de 2013 15:02
    segunda-feira, 16 de dezembro de 2013 14:02

Todas as Respostas

  • Rods Leal,

    Void não retorna nada , só executa o conteúdo dentro do método, altera de void para DataTable e ve se funciona......



    Diego Almeida Barreto
    System Analyst / Software Developer

    • Sugerido como Resposta Guilherme da Luz sexta-feira, 13 de dezembro de 2013 17:32
    sexta-feira, 13 de dezembro de 2013 17:30
  • funcionou sim!
    obrigado!
    aproveitando esse tópico
    você sabe como faço pra usar uma textbox de outro form em uma classe?
    eu tenho uma variável n e gostaria de botar uma textbox dentro dela, por exemplo :

      n = ConsultaLivros.txtpesquisar.text; 
        con.Open();
        cmd = new SqlCommand("select * from livros where nomelivro = ('" + n + "')");

    mas dá o seguinte erro: " is inaccessible due to its protection level"
    sabe como posso resolver isso?

    sexta-feira, 13 de dezembro de 2013 17:45
  • Rods Leal,

    Desculpa mas não entendi, vc quer pegar o valor de um textbox e mandar para uma variável de uma classe ?? seria isso???



    Diego Almeida Barreto
    System Analyst / Software Developer

    sexta-feira, 13 de dezembro de 2013 18:01
  • isso mesmo.
    segunda-feira, 16 de dezembro de 2013 13:27
  • Rods Leal

    pode postar a estrutura da sua classe para ver como ela esta?????????????



    Diego Almeida Barreto
    System Analyst / Software Developer

    segunda-feira, 16 de dezembro de 2013 13:38
  • namespace Biblioteca
    {
        class ConsultarLivro
        {
            SqlConnection con = new SqlConnection("Integrated Security=SSPI; Persist Security Info=False; User ID=sa; Password=scan123*;Initial Catalog=livraria; Data Source=localhost");
            SqlCommand cmd;
            SqlDataReader reader;
      
               
            public DataTable procuralivro() {
               
                SqlDataAdapter da = new SqlDataAdapter();
                DataTable dt = new DataTable();
                string n;
                n = ConsultaLivros.txtpesquisar.text; 
        con.Open();
        cmd = new SqlCommand("select * from livros where nomelivro = ('" + n + "')");
        cmd.Connection = con;
    
         da.SelectCommand = cmd;
    
         da.Fill(dt);
    
            
            con.Close();
            return dt;
            
            }
        }
    }
    eu quero que aquela variável n receba o valor digitado na txtpesquisar.text que está no form consultalivros
    tentei fazer desse jeito mas está dando erro
    tem outra sugestão?
    segunda-feira, 16 de dezembro de 2013 13:43
  • Cria um parâmetro no seu método e passa ela para a variável n :

    namespace Biblioteca
    {
        class ConsultarLivro
        {
            SqlConnection con = new SqlConnection("Integrated Security=SSPI; Persist Security Info=False; User ID=sa; Password=scan123*;Initial Catalog=livraria; Data Source=localhost");
            SqlCommand cmd;
            SqlDataReader reader;
    
    
            public DataTable procuralivro(String ValorPesquisa)
            {
    
                SqlDataAdapter da = new SqlDataAdapter();
                DataTable dt = new DataTable();
                string n;
                n = ValorPesquisa;
                con.Open();
                cmd = new SqlCommand("select * from livros where nomelivro = ('" + n + "')");
                cmd.Connection = con;
    
                da.SelectCommand = cmd;
    
                da.Fill(dt);
    
    
                con.Close();
                return dt;
    
            }
        }
    }

    ai na hora de Chamar o metodo procuralivro vc faz assim :

    procuralivro(txtpesquisar.text);
    tenta ver se isso funciona !!!!!



    Diego Almeida Barreto
    System Analyst / Software Developer

    • Marcado como Resposta Rods Leal segunda-feira, 16 de dezembro de 2013 15:02
    segunda-feira, 16 de dezembro de 2013 14:02
  • Funcionou perfeitamente!!
    Obrigado.
    segunda-feira, 16 de dezembro de 2013 15:02