none
Select retornar um dado num textbox RRS feed

  • Pergunta

  • E aí pessoal, blz pura?

    Gente sou novato em programação e estou precisando muito da ajuda de vc´s.

    Estou querendo fazer um select no banco Access onde ele irá buscar o cpf da pessoa e retornar seu nome preenchendo um textbox.

    Já fiz isso mas ele só me retorna o ultimo dado do meu banco. O que será que estou fazendo de errado?

    Segue o código.

    String _connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\herbert.freitas.MTE\Documents\clientes.accdb";

                OleDbConnection _connection = new OleDbConnection(_connectionString);

                OleDbCommand _command = new OleDbCommand("select Nome From clientes Where (ID = id)", _connection);

                OleDbDataReader rdr = null;

                _connection.Open();

                rdr = _command.ExecuteReader();

               while (rdr.Read())

               {

                   resultnome.Text = rdr["Nome"].ToString();

               }

                rdr.Close();

               _connection.Close();

    Agradeço a todos antecipadamente.

    terça-feira, 17 de abril de 2012 18:26

Respostas

  • Isto esta mal:  OleDbCommand _command = new OleDbCommand("select Nome From clientes Where (ID = id);

    Voce precisa um parametro no teu comando.

    Faz assim:  OleDbCommand _command = new OleDbCommand("select Nome From clientes Where ID =@id);

                              _command.parameters.addwithvalue("@id", textboxcpf.text);

     OleDbDataReader rdr = null;

                _connection.Open();

                rdr = _command.ExecuteReader();

               while (rdr.Read())

               {

                   resultnome.Text = rdr["Nome"].ToString();

               }

               rdr.Close();

               _connection.Close();


    Se o amor fosse pecado, quem seria INOCENTE?

    • Marcado como Resposta Herbert Freitas quarta-feira, 18 de abril de 2012 16:10
    quarta-feira, 18 de abril de 2012 11:49
    Moderador

Todas as Respostas

  • OleDbCommand _command = new OleDbCommand("select Nome From clientes Where (ID = id) ORDER BY (nome da coluna que você quer)", _connection);


    Att. Lucas Rodrigues


    terça-feira, 17 de abril de 2012 18:45
  • Cara, não funcionou, continua voltando como resultado a ultima linha do banco e não o nome daquele CPF específico.
    terça-feira, 17 de abril de 2012 19:00
  • só uma coisa você testou esse select no banco antes? as vezes é erro de código de banco de dados e não do c#!

    eu n estou vendo erro neste seu código!


    Att. Lucas Rodrigues

    terça-feira, 17 de abril de 2012 19:02
  • select Nome From clientes Where (ID = @id)
    _command.Parameters.AddWithValue("@id","1")
    terça-feira, 17 de abril de 2012 19:40
  • amigo, o seu problema é no comando sql. Você não está concatenando a variável 'ID' no seu código... voce está fazendo um select que retorne todos os clientes se a coluna ID for igual a coluna ID, preste atenção e verá! Dai o comando traz todos os clientes do banco, voce faz um Loop em todos os cliente e é obvio que o ultimo cliente sempre vai ficar por ultimo. Jogue o ID do cliente em uma variavel e depois concatene no comando.

    Se o ID  for numérico faça seu comando assim:

    decimal VariavelID = 1234;

    OleDbCommand _command = new OleDbCommand("select Nome From clientes Where (ID =" + VariavelID + ")", _connection);


    Se o ID do cliente for string faça assim (a diferença é que esse tem aspas simples nas extremidades da variável): 

    string VariavelID = "1234";

    OleDbCommand _command = new OleDbCommand("select Nome From clientes Where (ID = '" + VariavelID + "' )", _connection);


    Se solucionou não esqueça de marcar ;)



    terça-feira, 17 de abril de 2012 22:19
  • Isto esta mal:  OleDbCommand _command = new OleDbCommand("select Nome From clientes Where (ID = id);

    Voce precisa um parametro no teu comando.

    Faz assim:  OleDbCommand _command = new OleDbCommand("select Nome From clientes Where ID =@id);

                              _command.parameters.addwithvalue("@id", textboxcpf.text);

     OleDbDataReader rdr = null;

                _connection.Open();

                rdr = _command.ExecuteReader();

               while (rdr.Read())

               {

                   resultnome.Text = rdr["Nome"].ToString();

               }

               rdr.Close();

               _connection.Close();


    Se o amor fosse pecado, quem seria INOCENTE?

    • Marcado como Resposta Herbert Freitas quarta-feira, 18 de abril de 2012 16:10
    quarta-feira, 18 de abril de 2012 11:49
    Moderador
  • Obrigado a todos os colegas, a solução do Malange - Levi funcionou perfeitamente.

    Desculpe a todos mas no começa apanhamos mesmo.

    quarta-feira, 18 de abril de 2012 16:10