none
Como testar se uma consulta ao banco obteve êxito? RRS feed

  • Pergunta

  • Boa noite pessoal,
    eu gostaria de saber como posso fazer para saber se minha consulta ao banco obteve êxito, para a partir dai fazer o que desejar.No caso verificar se o usuario exist no banco, se exigistir abre um form, caso contrário exibe mensagem de erro. Segue código da consulta.
    Desde já grato.




     
    Code Snippet

    //Classe CadastroUsuarioDAL.cs 


    public void Logar(Usuario user)
    {
    SqlConnection conn = new SqlConnection();
    try
    {

    conn.ConnectionString = Dados.StrConnection;

    SqlCommand cmd = new SqlCommand("SELECT * FROM tbUsuarios WHERE NomeUsuario = @usuario AND Senha = @senha", conn);
    conn.Open();
    cmd.Parameters.AddWithValue("@usuario", user.ConsultaUtilizador);
    cmd.Parameters.AddWithValue("@senha", user.ConsultaSenha);

    }

    catch (SqlException e)
    {
    string.Format(@"Ocorreu um erro na tentativa de conexão com o Banco de Dados. Mensagem: {0}", e.Message);
    }
    catch (Exception e)
    {
    string.Format(@"Ocorreu um erro na tentativa de conexão com o Banco de Dados. Mensagem: {0}", e.Message);

    }
    finally
    {
    conn.Close();
    }
    }

    sexta-feira, 29 de agosto de 2008 02:24

Respostas

  • Cleidson,

    você quer saber se a consulta retornou algum registro? Isso irá depender do objeto que vc irá trabalhar: DataReader ou DataSet. Se usar o DataReader (modelo conectado), você pode usar o método Read() do mesmo, que retorna true enquanto houver registro. Já se usar o DataSet (modelo desconecatado), você terá que verificar se há algum registro na coleção de linhas do DataTable. Mais informações:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=296
    Chapter 6: Data Manipulation with ADO.NET - http://www.4guysfromrolla.com/webtech/chapters/ASPNET/ch06.html

     


    Ricardo Oneda
    http://oneda.mvps.org/blog

    sexta-feira, 29 de agosto de 2008 12:09
  •  

    Olá Cleidson,

     

    Amigo, segue algumas sugestões.

     

    public bool Logar(Usuario user) // Alterar tipagem

    {

    bool value = false;

    SqlConnection conn = new SqlConnection(StrConnection);

    SqlCommand cmd = conn.CreateCommand();

     

    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "SELECT * FROM tbUsuarios WHERE NomeUsuario = @usuario AND Senha = @senha";

    try

    {

    conn.Open();

    cmd.Parameters.AddWithValue("@usuario", user.ConsultaUtilizador);

    cmd.Parameters.AddWithValue("@senha", user.ConsultaSenha);

    //Acrescentar...

    SqlDataReader reader;

    reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

    value = reader.HasRows;

    reader.Dispose();

    }

    catch (SqlException e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

    catch (Exception e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

     

    return value;

    }

     

     

    Segue outra alternativa.. acho mais interessante para o problema em questão!

     

    .....

    public int Logar2(Usuario user) // Alterar tipagem

    {

    int value = 0;

     

    SqlConnection conn = new SqlConnection(StrConnection);

    SqlCommand cmd = conn.CreateCommand();

     

    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "SELECT COUNT(*) FROM tbUsuarios WHERE NomeUsuario = @usuario AND Senha = @senha";

     

    try

    {

    conn.Open();

    cmd.Parameters.AddWithValue("@usuario", user.ConsultaUtilizador);

    cmd.Parameters.AddWithValue("@senha", user.ConsultaSenha);

     

    //Acrescentar...

    value = (int)cmd.ExecuteScalar();

    }

    catch (SqlException e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

    catch (Exception e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

    finally

    {

    conn.Dispose();

    }

     

    return value;

    }

     

    Bom espero ter ajudado.

     

    Atenciosamente,

    Flávio Secchieri Mariotti

    Analista de Sistemas

    http://fsmworlddotnet.blogspot.com

     

    sábado, 30 de agosto de 2008 01:46

Todas as Respostas

  • Cleidson,

    você quer saber se a consulta retornou algum registro? Isso irá depender do objeto que vc irá trabalhar: DataReader ou DataSet. Se usar o DataReader (modelo conectado), você pode usar o método Read() do mesmo, que retorna true enquanto houver registro. Já se usar o DataSet (modelo desconecatado), você terá que verificar se há algum registro na coleção de linhas do DataTable. Mais informações:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=296
    Chapter 6: Data Manipulation with ADO.NET - http://www.4guysfromrolla.com/webtech/chapters/ASPNET/ch06.html

     


    Ricardo Oneda
    http://oneda.mvps.org/blog

    sexta-feira, 29 de agosto de 2008 12:09
  •  

    Olá Cleidson,

     

    Amigo, segue algumas sugestões.

     

    public bool Logar(Usuario user) // Alterar tipagem

    {

    bool value = false;

    SqlConnection conn = new SqlConnection(StrConnection);

    SqlCommand cmd = conn.CreateCommand();

     

    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "SELECT * FROM tbUsuarios WHERE NomeUsuario = @usuario AND Senha = @senha";

    try

    {

    conn.Open();

    cmd.Parameters.AddWithValue("@usuario", user.ConsultaUtilizador);

    cmd.Parameters.AddWithValue("@senha", user.ConsultaSenha);

    //Acrescentar...

    SqlDataReader reader;

    reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

    value = reader.HasRows;

    reader.Dispose();

    }

    catch (SqlException e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

    catch (Exception e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

     

    return value;

    }

     

     

    Segue outra alternativa.. acho mais interessante para o problema em questão!

     

    .....

    public int Logar2(Usuario user) // Alterar tipagem

    {

    int value = 0;

     

    SqlConnection conn = new SqlConnection(StrConnection);

    SqlCommand cmd = conn.CreateCommand();

     

    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "SELECT COUNT(*) FROM tbUsuarios WHERE NomeUsuario = @usuario AND Senha = @senha";

     

    try

    {

    conn.Open();

    cmd.Parameters.AddWithValue("@usuario", user.ConsultaUtilizador);

    cmd.Parameters.AddWithValue("@senha", user.ConsultaSenha);

     

    //Acrescentar...

    value = (int)cmd.ExecuteScalar();

    }

    catch (SqlException e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

    catch (Exception e)

    {

    string.Format(@"Ocorreu um erro na tentativa de conexÆo com o Banco de Dados. Mensagem: {0}", e.Message);

    }

    finally

    {

    conn.Dispose();

    }

     

    return value;

    }

     

    Bom espero ter ajudado.

     

    Atenciosamente,

    Flávio Secchieri Mariotti

    Analista de Sistemas

    http://fsmworlddotnet.blogspot.com

     

    sábado, 30 de agosto de 2008 01:46