none
Preencher 2 Labels com o resultado de um inner join em duas tabelas RRS feed

  • Pergunta

  • Olá, estou com uma grande dúvida, tenho duas tabelas:

    tbCliente >> idCliente
       nome
       email

    tbEndereco >> idCliente
          endereco
          bairro

     

    Gostaria de saber como retornar o Nome do Cliente e o Seu endereço, fazendo um inner join nessas tabelas e comparando os id's dos clientes presentes nelas, gostaria de exibir esses resultados em labels.

    quando tento executar esta consulta abaixo no SSMS, retorna os dados como eu espero, mas não estou conseguindo implementar isso em C#, segue abaixo a query que eu quero que retorne para os labels

     

    select tbCliente.nome,tbEndereco.endereco as tbCliente

    from tbCliente inner join tbEndereco

    on tbCliente.idCliente = tbEndereco.idCliente

    where tbCliente.idCliente = 1

     

    esse número 1, é o código do cliente presente nas duas tabelas, nessa query só coloquei como exemplo, mas estarei comparando com uma variável de sessão!

     

    por favor me ajudem...

    desde ja agradeço a todos e um feliz natal para todos

         

    sexta-feira, 24 de dezembro de 2010 22:04

Respostas

  • Bom dia Rafael, segue abaixo um exemplo para lhe orientar só lembrando que este código deve ser melhorado e otimizado tá feito meio á facão apenas para lhe dar uma idéia de como pode ser feito e claro que existe maneiras melhores. rsrsrs mais tá funfando certinho...

     Aqui fiz 2 tabelas sendo elas: cliente(IdCliente, Nome, Email) | Endeco(IdEndereco, Endereco, Bairro, IdCliente) abaixo segue um método parametrizado que retorna um vetor de string com os dados que deseja exibir e no load do form fiz os label receber esses dados.

    private void Form1_Load(object sender, EventArgs e)
        {
          //crio um vetor e faço ele receber os dados 
          //retornados pelo método e onde está o número 1
          //entra sua variável de sessão
          string[] Dados = ObterDados(1);
    
          //adiciono os dados no label
          lblNome.Text = Dados[0];
          lblEndereco.Text = Dados[1] + "," + Dados[2];
    
        }
    
    
        //Método que retorna um vetor de strings parametrizado
        //onde entra sua variável de sessão    
        public string[] ObterDados(int codCliente)
        {
          //obtem conexão
          SqlConnection conn = new SqlConnection(@"Data Source=ZEGOIABA-PC\SQLEXPRESS;Initial Catalog=forum;Integrated Security=True;Pooling=False");
          //Variável para montar o sql
          StringBuilder sql = new StringBuilder();
          //Comandos do join nas dua tabelas      
          sql.Append("SELECT Cliente.Nome, Endereco.Endereco, Endereco.Bairro ");
          sql.Append("FROM Cliente INNER JOIN Endereco ");
          sql.Append("ON Cliente.IdCliente = Endereco.IdCliente ");
          sql.Append("WHERE Cliente.IdCliente=@codCliente ");
          //vincula os comandos criados ao command
          SqlCommand cmd = new SqlCommand(sql.ToString(), conn);
          //preenche o parâmetro com o código do cliente que deseja exibir os dados
          cmd.Parameters.AddWithValue("@codCliente", codCliente);
          //instância o vetor que será retornado
          string[] Dados = new string[3];
          //Abre conexão
          conn.Open();
          //Cria o leitor e executa o comando
          SqlDataReader leitor = cmd.ExecuteReader();
          //Se existir linhas
          if (leitor.HasRows)
          {
            //enquanto o leitor estiver lendo
            while (leitor.Read())
            {
              //preenche o vetor com os dados desejados
              Dados[0] = leitor["Nome"].ToString();
              Dados[1] = leitor["Endereco"].ToString();
              Dados[2] = leitor["Bairro"].ToString();
            }
          }
          //fecha conexão
          conn.Close();
          //retorna o vetor com os dados 
          return Dados;
        }
    

    Feliz Natal pra vc e toda sua família!

    Abraços e espero realmente ter lhe ajudado.


    Beleza de Creuza!
    sábado, 25 de dezembro de 2010 12:02