Usuário com melhor resposta
Como testar se uma consulta ao banco obteve êxito?

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();
}
}
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 -
Olá Cleidson,
Amigo, segue algumas sugestões.
{
cmd.CommandType =
cmd.CommandText =
"SELECT * FROM tbUsuarios WHERE NomeUsuario = @usuario AND Senha = @senha"; try{
conn.Open();
cmd.Parameters.AddWithValue(
cmd.Parameters.AddWithValue(
"@senha", user.ConsultaSenha); //Acrescentar... SqlDataReader reader;reader = cmd.ExecuteReader(
CommandBehavior.CloseConnection);value = reader.HasRows;
reader.Dispose();
}
catch (SqlException e){
}
catch (Exception e){
}
return value;
}
Segue outra alternativa.. acho mais interessante para o problema em questão!
.....
public int Logar2(Usuario user) // Alterar tipagem
{
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(
cmd.Parameters.AddWithValue(
"@senha", user.ConsultaSenha);//Acrescentar...
value = (
int)cmd.ExecuteScalar();}
catch (SqlException e){
}
catch (Exception e){
}
finally{
conn.Dispose();
}
return value;
}
Bom espero ter ajudado.
Atenciosamente,
Flávio Secchieri Mariotti
Analista de Sistemas
http://fsmworlddotnet.blogspot.com
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 -
Olá Cleidson,
Amigo, segue algumas sugestões.
{
cmd.CommandType =
cmd.CommandText =
"SELECT * FROM tbUsuarios WHERE NomeUsuario = @usuario AND Senha = @senha"; try{
conn.Open();
cmd.Parameters.AddWithValue(
cmd.Parameters.AddWithValue(
"@senha", user.ConsultaSenha); //Acrescentar... SqlDataReader reader;reader = cmd.ExecuteReader(
CommandBehavior.CloseConnection);value = reader.HasRows;
reader.Dispose();
}
catch (SqlException e){
}
catch (Exception e){
}
return value;
}
Segue outra alternativa.. acho mais interessante para o problema em questão!
.....
public int Logar2(Usuario user) // Alterar tipagem
{
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(
cmd.Parameters.AddWithValue(
"@senha", user.ConsultaSenha);//Acrescentar...
value = (
int)cmd.ExecuteScalar();}
catch (SqlException e){
}
catch (Exception e){
}
finally{
conn.Dispose();
}
return value;
}
Bom espero ter ajudado.
Atenciosamente,
Flávio Secchieri Mariotti
Analista de Sistemas
http://fsmworlddotnet.blogspot.com