Dúvida cruel

16/03/2006

0

Como verifico se um dataset esta vazio (o select não retornou nenhum registro) em C# ?

Grato desde ja


Djcacao

Djcacao

Responder

Posts

16/03/2006

Martins

Como verifico se um dataset esta vazio (o select não retornou nenhum registro) em C# ? Grato desde ja


Mas vc já fez isso antes, em sua outra rotina.

sqlCommand1.CommandText = "select *  etc..."; 
System.Data.SqlClient.SqlDataReader Clientes = sqlCommand1.ExecuteReader(); 

if (! Clientes.Read()) 
{ 
  System.Windows.Forms.MessageBox.Show("Está tabela está vazia..."); 
} 

Clientes.Close();



Responder

16/03/2006

Djcacao

Martins, tive que mudar os comandos de conexão para:

fbComm_atual.CommandText = ´select * from dbf_usuario where (usuario = @p_usu) and (senha = @p_senha)´;
fbComm_atual.Parameters.Clear();
fbComm_atual.Parameters.Add(´@p_usu´, edt_usuario.Text.ToString());
fbComm_atual.Parameters.Add(´@p_senha´, edt_senha.Text.ToString());
fbDataAdapter.Fill(ds_usuario, ´DBF_USUARIO´);

para depois poder usar esse outro comando:
if (ds_usuario.Tables[´DBF_USUARIO´].Rows[linhaAtual][´senha´].ToString() == edt_senha.Text.ToString())

conferindo a senha...

Por isso preciso saber com verificar se um dataset esta vazio...
Se poder me ajudar...


Responder

16/03/2006

Massuda

Faça algo assim...
if (ds_usuario.Tables["DBF_USUARIO"].Rows.Count > 0) {
  // tabela não está vazia
}
else {
  // tabela está vazia
}
...



Responder

16/03/2006

Martins

Faça algo assim...
if (ds_usuario.Tables["DBF_USUARIO"].Rows.Count > 0) {
  // tabela não está vazia
}
else {
  // tabela está vazia
}
...


Prontinho o [b:944ef811b5]Massuda[/b:944ef811b5] já respondeu, já q vc quer apenas verificar, use a dica acima.

Valew [b:944ef811b5]Massuda[/b:944ef811b5]


Responder

16/03/2006

Emerson Nascimento

Martins, tive que mudar os comandos de conexão para: fbComm_atual.CommandText = ´select * from dbf_usuario where (usuario = @p_usu) and (senha = @p_senha)´; fbComm_atual.Parameters.Clear(); fbComm_atual.Parameters.Add(´@p_usu´, edt_usuario.Text.ToString()); fbComm_atual.Parameters.Add(´@p_senha´, edt_senha.Text.ToString()); fbDataAdapter.Fill(ds_usuario, ´DBF_USUARIO´); para depois poder usar esse outro comando: if (ds_usuario.Tables[´DBF_USUARIO´].Rows[linhaAtual][´senha´].ToString() == edt_senha.Text.ToString()) conferindo a senha... Por isso preciso saber com verificar se um dataset esta vazio... Se poder me ajudar...

o que você está solicitando é incoerente. a senha já é passada como parâmetro para a instrução SQL, portanto, depois de abrir o dataset, não será necessário conferir a senha. a menos que você altere sua instrução para:
[i:2768fea959]fbComm_atual.CommandText = ´select * from dbf_usuario where (usuario = @p_usu)´;
fbComm_atual.Parameters.Clear();
fbComm_atual.Parameters.Add(´@p_usu´, edt_usuario.Text.ToString());
fbDataAdapter.Fill(ds_usuario, ´DBF_USUARIO´);[/i:2768fea959]
note que no exemplo acima a senha não será passada, tendo que ser conferida posteriormente (como você solicitou).

particularmente, prefiro a primeira opção:
você passa o usuário [b:2768fea959]E[/b:2768fea959] a senha e verifica se o dataset retornou algum registro. se sim, usuário Ok; se não, usuário ou senha inválidos (fica indefinido qual falhou: usuario ou senha).

- da forma que você quer fazer é mais fácil quebrar a segurança, visto que se eu acertar o usuário, só precisarei ficar tentando - via ´força bruta´ - a senha
- da outra forma é preciso encontrar a combinação usuário/senha, mas o sistema não informará qual está errado, gerando maior dificuldade na quebra.


Responder

17/03/2006

Djcacao

Galera, muito obrigado pelas dicas...

realmente martins, continuo passando usuario e senha, porem cai em um problema que não conseguia resolver... o problema era o seguinte:

esqueci de vincular o fbconn_atual com o dataset, com isso, o resultado nunca era somente o usuario e a senha.

Vinculei e acabou o problema...

Agora tenho um outro dilema...
quando eu coloco um usuario e senha que não atende o select, ai invés do sistema informar que usuário é inválido, o sistema informa que não foi possivel conectar ao banco, a instrução de senha esta dentro de try...catch

Alguem sabe me ajudar ?


Um outro caso é que quero pegar o usuario digitado e informar no form de menu principal, que é o proximo a ser aberto....
então fiz uma classe assim:

public class conexao
{
string VSusuario;

public void seta_usuario(string nome)
{
VSusuario = nome;
}

public string pega_usuario()
{
return VSusuario.ToString();
}
}

porem quando faço o comando para associar o return a um item do statusbar, aparece um erro dizendo que não foi possivel conectar ao banco de dados.


Agradeço desde já...


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar