none
Contagem de registros ?

    Question

  •  

    Olá pessoa, já procurei, mais nao encontrei como contar os registros retornados por um select.

     

    Alguém poderia me ajudar ?

     

     

    MySqlCommand cmd = new MySqlCommand("select * from users where UserID = ?UserID and Password = ?Password", this.conexao);

    cmd.Parameters.AddWithValue("UserID", (string)txtUsuario.Text);

    cmd.Parameters.AddWithValue("Password", (string)txtSenha.Text);

    MySqlDataAdapter da = new MySqlDataAdapter(cmd);

    DataSet ds = new DataSet();

    da.Fill(ds);

     

     

    O codigo acima é o que estou utilizando para carregar os dados.

    Preciso verificar se encontrou algo, para poder autorizar o usuario a utilizar o sistema, mais não sei como contar os registros retornados, em que o UserID seja do mesmo registro que o Password, sendo que só possa existir um UserID no banco, então se encontrar algo ele aceita.

     

    Como posso proceder ?

     

    Qualquer ajuda será muito bem vinda.

    Tuesday, February 12, 2008 10:06 PM

All replies

  • Ola Luiz,

     

    Você pode fazer assim

     

    Code Snippet

    if (ds.Tables[0].Rows.Count > 0)

    {

    //Tem registro

    }

    else

    {

    //Não tem registro

    }

     

     

    Abraço,
    Tuesday, February 12, 2008 10:43 PM
  • Alguns pontos e dicas, amigo Smile

     

    - Não use o cast (string)txtUsuario.Text, já que a propriedade Text já string.

     

    - Não preencha um DataSet somente pra verificar se um usuário existe. Utilize um data reader. Ele possui uma propriedade específica pro que vc precisa que se chama "HasRows". DataSet é um objeto que consome muito recurso e só deve ser usado quando realmente necessario, e  no seu caso ele é completamente dispensável.

     

    Faz desse jeito...

     

    Code Snippet

    SqlCommand cmdLesion = new SqlCommand ("proc_SelectLesion", conn);
    cmdLesion.CommandType = CommandType.StoredProcedure;

    cmdLesion.Parameters.Add(new SqlParameter("@User", txtUser.Text));
    cmdLesion.Parameters.Add(new SqlParameter("@pass", txtPass.Text));

    conn.Open();

    SqlDataReader dr;
    dr = cmdLesion.ExecuteReader(CommandBehavior.SingleRow);

    if(dr.HasRows)
    {
        //Existe!

    }
    else
    {
        //Não existe

    }

    dr.Close();

     

     

    Grande abraço
    Thursday, February 14, 2008 4:39 PM
  • Luiz

     

    Ja que voce estar apenas fazendo uma leitura na tabela porque voce nao procura utilizar o dataRead para fazer essa operação.

     

    MySqlCommand cmd = new MySqlCommand("select * from users where UserID = ?UserID and Password = ?Password", this.conexao);

    cmd.Parameters.AddWithValue("UserID", txtUsuario.Text);

    cmd.Parameters.AddWithValue("Password", txtSenha.Text);

     

    DataReader dr = new DataReader();

     

    dr = cmd.ExecuteCommandReader();

     

    if (dr.Read)

    {

    //Sua sequencia de comandos

    }

    else

    {

    //Mesagem para informar que nao é valido o login ou a senha

    }

     

    dr.Close();

     

    Nunca se esqueça de fechar o dataReader

     

     

    Thursday, February 14, 2008 4:48 PM
  • Pessoal.

     

    Os esclarecimentos sobre o uso do DataSet foram bons, mas e se o codigo abaixo fosse utilizado, então como ficaria com o uso do DataReader ?

     

    if ((ds != null) && (ds.Tables[0].Rows.Count > 0))

    {

    string Nome = ds.Tables[0].Rows[0]["UserName"].ToString();

    MessageBox.Show("Bom serviço.: " + Nome, "Saudações...", MessageBoxButtons.OK, MessageBoxIcon.Information);

    this.DialogResult = DialogResult.OK;

    }

    else

    {

    MessageBox.Show("Usuário não encontrado, tente novamente...", "Erro geral...", MessageBoxButtons.OK, MessageBoxIcon.Error);

    this._Count++;

    if (this._Count >= 3)

    {

    MessageBox.Show("Tentativas esgotadas...", "Erro geral...", MessageBoxButtons.OK, MessageBoxIcon.Error);

    Application.Exit();

    }

    this.DialogResult = DialogResult.None;

    }

     

     

    No caso, gostaria de usar isso, para saudar o usuário assim que logar no sistema.

    Apenas por questão de padrão da empresa.

    Qualquer esclarecimento sobre como eu consigo o nome do usuário logado com o DataReader, será muito bem vinda.

    Friday, February 15, 2008 5:57 AM
  • Antes que me esqueça.

    Tenho uma outra duvida em relação a banco de dados.

     

    Ao criar o objeto de conexao, tipo: "MySqlConnection conexao = new MySqlConnection(ConnectionString);"

    Qual o melhor lugar de se fazer isso ?

     

    Por exemplo.:

    1º - É melhor criar um global e usar no sistema inteiro ?

    2º - Ou é melhor criar um para cada form que necessite de acesso ao banco de dados ?

     

    Qual seria a melhor opção ?

    Friday, February 15, 2008 6:06 AM