Ir ao conteúdo

Ler mais de um registro com o DataReader?(C#)


bartsimpson

Posts recomendados

Postado

Olá pessoal, como comentado em outro tópico, estou precisando fazer um trabalho da faculdade e sou iniciante em programação C#.

Eu tenho uma consulta no SQL que retorna 3 linhas, vai me retornar 3 valores. Gostaria de saber como faço para armazenar esses valores em variáveis diferentes, ou até mesmo em alguma textbox... estava fazendo dessa maneira, porém não está funcionando:

SqlCommand consultaport = new SqlCommand("Select top 3 traducao from palavras where tipo = 2 order by newid()", conexao);

consultaport.ExecuteNonQuery();

SqlDataReader leitorport = null;

leitorport = consultaport.ExecuteReader();

while (leitorport.Read())

{

txtResposta.Text = leitorport["traducao"].ToString();

leitorport.NextResult();

txtResposta2.Text = leitorport["traducao"].ToString();

leitorport.NextResult();

txtResposta3.Text = leitorport["traducao"].ToString();

}

leitorport.Close();

Porém não está dando certo! :confused:

Obrigado pela ajuda!

  • Membro VIP
Postado

Vou tentar te ajudar um pouco, o comando "leitorport.Read()" avança para o próximo registro e retorna true se existir um próximo registro, false se não existir, o comando "leitorport.NextResult();" avança para a próxima tabela, por exemplo, se você tivesse "select 1; select 2" você precisaria usar o NextResult para pegar o valor do segundo select, no exemplo que você postou o while é desnecessário, você esta esperando no máximo 3 registros, e o Read deveria estar no lugar do NextResult para ele pegar cada vez o próximo registro, por exemplo:


SqlCommand consultaport = new SqlCommand("Select top 3 traducao from palavras where tipo = 2 order by newid()", conexao);
consultaport.ExecuteNonQuery();
SqlDataReader leitorport = null;
leitorport = consultaport.ExecuteReader();
leitorport.Read()
txtResposta.Text = leitorport["traducao"].ToString();
leitorport.Read()
txtResposta2.Text = leitorport["traducao"].ToString();
leitorport.Read()
txtResposta3.Text = leitorport["traducao"].ToString();
leitorport.Close();

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!