Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Verificar chave-primária


Ewerton Info

Pergunta

Olá pessoal,

Estou com problema em verificar se o ID (chave-primária) que o usuário digitou existe no Banco de Dados.

Entendendo o contexto:

1- Na camada de interface há a chamada do método VerificaChave:

if (bccustomers.VerificaChave(ecustomers.getCustomerID()) == true)
{
    MessageBox.Show("O Customer ID informado já existe!\nDigite outro valor.");
}
else
{
    //etc
}
2- Na camada de Negócios monto uma query, que contará o número de ID iguais (no caso, o máximo seria 1):
public Boolean VerificaChave(String CustomerID)
{
    queryString = "SELECT COUNT(*) FROM Customers WHERE CustomerID ='" + CustomerID + "'";
    return dados.VerificaChave(queryString);
}
3- Na camada de dados eu executo a query:
public Boolean VerificaChave(String queryString)
{
    Conectar();

    OleDbCommand command = new OleDbCommand(queryString, conexao);
    Int32 recordsAffected = command.ExecuteNonQuery();

    Desconectar();

    if (recordsAffected == 1)
    {
        //existe chave repetida
        return true;
    }
    //não existe chave repetida
    return false;
}

Meu professor disse que recordsAffected guardaria o resultado da contagem...

Entretanto, quando faço o Debug do programa verifico que recordsAffected sempre está em zero. (Ou seja, testando com uma chave que existe no BD e também com uma que ainda não existe)

Alguém pode me ajudar?

Obs.: Utilizo o Visual Studio 2008 Express Edition.

Agradeço desde já,

Ewerton.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Meu professor disse que recordsAffected guardaria o resultado da contagem...

Entretanto, quando faço o Debug do programa verifico que recordsAffected sempre está em zero. (Ou seja, testando com uma chave que existe no BD e também com uma que ainda não existe)

Alguém pode me ajudar?

Obs.: Utilizo o Visual Studio 2008 Express Edition.

Se você estiver interessado em saber quantas linhas foram afetados pelo comando use o método ExecuteNonQuery e verifique as propriedades HasRows e RecordsAffected.

mais informações:

http://www.macoratti.net/08/11/c_sql_m1.htm

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

cara, pelo q sei o ExecuteNonQuery() so vai retornar as linhas se for pra Delete e Update por exemplo.

acho q você vai ter q executar o ExecuteReader() e pegar o valor do Count() q você fez na query.

alem do mais, mesmo q o ExecuteNonQuery() te retornasse alguma coisa, a sua funcao ainda ia ta errada, pois o Count() sempre vai dar 1 registro, mesmo q a tabela teja vazia (nesse caso, vai ter um registro com o valor 0).

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...