none
Pegar valores unicos em uma sql RRS feed

  • Pergunta

  • Olá pessoal, eu tenho a seguinte SQL

    "SELECT nome, usuario, data_nascimento, data_cadastro FROM usuarios"

    eu preciso pegar os valores nome e data_nascimento, atraves do ExecuteScalar eu pegaria somente o nome, como eu faço para informar quais campos eu preciso pegar? tem como fazer isso com ExecuteScalar ou tem um jeito diferente? essa mesma sql eu uso para outros retorno por isso preciso informar todos esse campos porém e preciso pegar campos específicos na mesma sql...

    valeu...


    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php
    terça-feira, 5 de julho de 2011 19:21

Respostas

  • Você pode usar da seguinte forma:

     

    SqlDataReader dr = SEU_OBJETO_COMMAND.ExecuteReader(CommandBehaviour.CloseConnection);


    if(dr != null)

    {

       while(dr.Read())

       {

              Response.Write(dr["nome"].ToString());

              Response.Write(dr["usuario"].ToString());

              Response.Write(Convert.ToDateTime(dr["data_nascimento"], "dd/MM/yyyy").ToString());

              Response.Write(Convert.ToDateTime(dr["data_cadastro"], "dd/MM/yyyy").ToString());

       }

     

    dr.Close();

    }

     

    Abraços,

    Rodolfo Paoni


    Rodolfo Paoni
    • Marcado como Resposta Joao Batista quarta-feira, 6 de julho de 2011 21:08
    terça-feira, 5 de julho de 2011 19:52

Todas as Respostas

  • João,

    O que você quer dizer com valores únicos? Somente um registro ou todos os valores distintos da tabela usuarios?


    Carlos Eduardo Ferreira
    terça-feira, 5 de julho de 2011 19:49
  • Você pode usar da seguinte forma:

     

    SqlDataReader dr = SEU_OBJETO_COMMAND.ExecuteReader(CommandBehaviour.CloseConnection);


    if(dr != null)

    {

       while(dr.Read())

       {

              Response.Write(dr["nome"].ToString());

              Response.Write(dr["usuario"].ToString());

              Response.Write(Convert.ToDateTime(dr["data_nascimento"], "dd/MM/yyyy").ToString());

              Response.Write(Convert.ToDateTime(dr["data_cadastro"], "dd/MM/yyyy").ToString());

       }

     

    dr.Close();

    }

     

    Abraços,

    Rodolfo Paoni


    Rodolfo Paoni
    • Marcado como Resposta Joao Batista quarta-feira, 6 de julho de 2011 21:08
    terça-feira, 5 de julho de 2011 19:52
  • Essa sql minha já traz um unico valor, ela tem uma clausula WHERE (esqueci de mencionar)

    Assim: "SELECT nome, usuario, data_nascimento, data_cadastro FROM usuarios WHERE login = @login AND senha = @senha"

    então eu queria utilizar um jeito semelhante ExecuteScalar() porém, pegar outras colunas relacionadas também e não ter que passar por ExecuteReader()...


    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php
    terça-feira, 5 de julho de 2011 20:05
  • João, não entendi sua dúvida: é realmente uma questão do SQL Server?

    No SQL, você lista as colunas que quiser no seu Select, informando as tabelas no From. Nada mais que isso.


    Roberson Ferreira - Database Developer

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 5 de julho de 2011 22:11
    Moderador
  • Minha duvida não é de SQL, eu postei para asp.net mas acho que o moderador deve ter colocado em SQL, vou dizer na prática o que preciso:

     

    Eu tenho um script em asp.net que faz um login, ele funciona perfeito... porém na instrução que retorna se o login existe ou não eu também quero selecionar o nome do usuario, assim:

     

    "SELECT COUNT(id_usuario) as qtdUsuario WHERE login = @login AND senha = @senha"

    no asp.net eu faço um ExecuteScalar para pegar o valor qtdUsuario, funciona certinho, porém seu eu acrescentar um nome no select o ExecuteScalar já não consegue pegar o nome eu teria que utilizar um ExecuteReader, o que pergunto é se tem outro jeito de eu informar qual coluna eu quero pegar da query sql semelhante ao que acontece com o ExecuteScalar sendo que eu não tenha que passar por um ExecuteReader e fazer um while para assim informar qual coluna eu quero, entende? porque no caso que preciso a query teria vários campos e o ExecuteScalar irá pegar somente o primeiro....

     

    aguardo e desde agradeço a ajuda pessoal...

     


    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php
    quarta-feira, 6 de julho de 2011 17:11
  • João, testa o código que eu te mandei no post anterior que você consegue retornar N Linhas. Nesse caso, se ele retornar 1 linha não terá problema, você pegará os valores desse retorno com apenas 1 linha normalmente. Testa aí que vai funcionar, não tem errada.

     

    Abs


    Rodolfo Paoni

    • Sugerido como Resposta Rodolfo Paoni quarta-feira, 6 de julho de 2011 18:59
    quarta-feira, 6 de julho de 2011 18:59
  • Rodolfo, eu queria justamente não ter que passar um while.... tipo algo como tem no php que é mysql_result("nome do campo na query", variavel que tem a query)... mas beleza, pelo jeito tenho que passar ele mesmo..rs.. obrigado a todos pela ajuda...
    João Batista :: MSN jbdiacompleto@hotmail.com :: http://www.hostmundo.com.br/hospedagem.php
    quarta-feira, 6 de julho de 2011 21:08