Como não registrar um registro repetido no Banco de Dados - MySql - C Sharp - Visual Studio 2019

MySQL

Visual Studio

C#

03/02/2020

Olá, estou desenvolvendo um software, e estou tendo esse problema, de quando o usuario for se registrar, e não poder mais ser registrado algumas informações, para não ficar repetidas, alguém pode me ajudar nisso?
Rhyan

Rhyan

Curtidas 0

Respostas

Mauricio Espido

Mauricio Espido

03/02/2020

Olá, estou desenvolvendo um software, e estou tendo esse problema, de quando o usuario for se registrar, e não poder mais ser registrado algumas informações, para não ficar repetidas, alguém pode me ajudar nisso?

É necessário definir identificadores únicos na sua tabela de dados para impossibilitar repetições e tratar no seu sistema quando o usuário digitar o mesmo código.
GOSTEI 0
Rhyan

Rhyan

03/02/2020

Na verdade, eu gostaria de um algorítimo em C# no Visual Studio, eu já estou com o sistema de registro pronto, direto pro Banco de Dados, eu só gostaria de saber como é feito o algoritimo para ter essa identificação se já foi registrado, se precisar, eu mando aqui para você poder ver
GOSTEI 0
Lourenço Lima

Lourenço Lima

03/02/2020

Olá Rhyan, você poderia explicar um pouco mais? Quais informações não poderão se repetir? O nome do Usuário, por exemplo?
GOSTEI 0
Rhyan

Rhyan

03/02/2020

Olá Rhyan, você poderia explicar um pouco mais? Quais informações não poderão se repetir? O nome do Usuário, por exemplo?



Tipo assim, tenho minha tela de registro, Nome, E-mail e Senha;

**Programa pronto;
*Usuário 1 se registra, coloca Nome, senha e um e-mail(teste@gmail.com) - Registra

*Usuário 2 vai lá se registrar, coloca as coisas, mas ele acaba colocando também o e-mail(teste@gmail.com) - Repetido

*Um algorítimo que está no banco de dados, vai acessar o banco de dados e olhar se o e-mail = teste@gmail.com já existe, se existe irá parar a operação e limpar os campos, com um alerta de e-mail já registrado, caso não, mostra uma mensagem de sucesso e entra na próxima página

Basicamente é isso, que eu quero fazer, Lourenço
GOSTEI 0
Lourenço Lima

Lourenço Lima

03/02/2020

Olá Rhyan, você poderia explicar um pouco mais? Quais informações não poderão se repetir? O nome do Usuário, por exemplo?



Tipo assim, tenho minha tela de registro, Nome, E-mail e Senha;

**Programa pronto;
*Usuário 1 se registra, coloca Nome, senha e um e-mail(teste@gmail.com) - Registra

*Usuário 2 vai lá se registrar, coloca as coisas, mas ele acaba colocando também o e-mail(teste@gmail.com) - Repetido

*Um algorítimo que está no banco de dados, vai acessar o banco de dados e olhar se o e-mail = teste@gmail.com já existe, se existe irá parar a operação e limpar os campos, com um alerta de e-mail já registrado, caso não, mostra uma mensagem de sucesso e entra na próxima página

Basicamente é isso, que eu quero fazer, Lourenço


Olá,

Supondo que sua aplicação seja Windows Forms e que...
UsuarioContext seja o contexto.
txtNome, txtEmail, txtSenha sejam os textboxs do Nome, Email e Senha, respectivamente.
Usuario seja a classe do usuário.
Usuarios seja a tabela.
Tela seja a segunda tela que será aberta ao usuário se cadastrar.

using (var contexto = new UsuarioContext())
{
     // Tentará encontrar o primeiro registro que o Email for o mesmo que o digitado pelo usuário. Caso retorne nulo, ou seja não encontre...
     if (contexto.Usuarios.Where(x => x.Email == txtEmail.Text).FirstOrDefault() == null)
     {
               Usuario usuario = new Usuario();
               // Atribuição dos campos
               usuario.Nome = txtNome.Text;
               usuario.Email = txtEmail.Text;
               usuario.Senha = txtSenha.Text;
               contexto.Add(usuario); // Adiciona o Usuário
               contexto.SaveChanges(); // Salva as alterações no Banco de Dados
               
               Tela tela = new Tela();
                tela.Show(); // Abrir o outro form
                this.Hide(); // Fechar o form atual
     }
     else // Caso contrário, ou seja, caso encontre um usuário com o mesmo email
     {
          MessageBox.Show("Usuário já existente", "Erro ao Cadastrar Usuário", MessageBoxButtons.OK, MessageBoxIcon.Error); // Exibe mensagem de erro
          // Limpar os campos
          txtNome.Clear();
          txtEmail.Clear();
          txtSenha.Clear();
          txtUsuario.Focus(); // O cursor é redirecionado
     }
}


Sugestões de melhorias para o sistema:
- Verificar se há campos obrigatórios vazios e, caso tenha, exiba mensagem de erro.
- Criar textbox para Confirmar Senha e, verificar se a Senha é igual a Confirmação de Senha. Em caso negativo, exibirá mensagem de erro.
- Permitir que o usuário, quando já estiver logado no sistema, possa alterar sua senha.

Espero ter ajudado!
Caso tenha mais alguma dúvida, farei o possível para ajudá-lo!
GOSTEI 0
Rhyan

Rhyan

03/02/2020

Olá Rhyan, você poderia explicar um pouco mais? Quais informações não poderão se repetir? O nome do Usuário, por exemplo?



Tipo assim, tenho minha tela de registro, Nome, E-mail e Senha;

**Programa pronto;
*Usuário 1 se registra, coloca Nome, senha e um e-mail(teste@gmail.com) - Registra

*Usuário 2 vai lá se registrar, coloca as coisas, mas ele acaba colocando também o e-mail(teste@gmail.com) - Repetido

*Um algorítimo que está no banco de dados, vai acessar o banco de dados e olhar se o e-mail = teste@gmail.com já existe, se existe irá parar a operação e limpar os campos, com um alerta de e-mail já registrado, caso não, mostra uma mensagem de sucesso e entra na próxima página

Basicamente é isso, que eu quero fazer, Lourenço


Olá,

Supondo que sua aplicação seja Windows Forms e que...
UsuarioContext seja o contexto.
txtNome, txtEmail, txtSenha sejam os textboxs do Nome, Email e Senha, respectivamente.
Usuario seja a classe do usuário.
Usuarios seja a tabela.
Tela seja a segunda tela que será aberta ao usuário se cadastrar.

using (var contexto = new UsuarioContext())
{
     // Tentará encontrar o primeiro registro que o Email for o mesmo que o digitado pelo usuário. Caso retorne nulo, ou seja não encontre...
     if (contexto.Usuarios.Where(x => x.Email == txtEmail.Text).FirstOrDefault() == null)
     {
               Usuario usuario = new Usuario();
               // Atribuição dos campos
               usuario.Nome = txtNome.Text;
               usuario.Email = txtEmail.Text;
               usuario.Senha = txtSenha.Text;
               contexto.Add(usuario); // Adiciona o Usuário
               contexto.SaveChanges(); // Salva as alterações no Banco de Dados
               
               Tela tela = new Tela();
                tela.Show(); // Abrir o outro form
                this.Hide(); // Fechar o form atual
     }
     else // Caso contrário, ou seja, caso encontre um usuário com o mesmo email
     {
          MessageBox.Show("Usuário já existente", "Erro ao Cadastrar Usuário", MessageBoxButtons.OK, MessageBoxIcon.Error); // Exibe mensagem de erro
          // Limpar os campos
          txtNome.Clear();
          txtEmail.Clear();
          txtSenha.Clear();
          txtUsuario.Focus(); // O cursor é redirecionado
     }
}


Sugestões de melhorias para o sistema:
- Verificar se há campos obrigatórios vazios e, caso tenha, exiba mensagem de erro.
- Criar textbox para Confirmar Senha e, verificar se a Senha é igual a Confirmação de Senha. Em caso negativo, exibirá mensagem de erro.
- Permitir que o usuário, quando já estiver logado no sistema, possa alterar sua senha.

Espero ter ajudado!
Caso tenha mais alguma dúvida, farei o possível para ajudá-lo!




Não saquei muito no "UsuarioContext()" não entendi o que fazer
GOSTEI 0
Lourenço Lima

Lourenço Lima

03/02/2020

Olá Rhyan, você poderia explicar um pouco mais? Quais informações não poderão se repetir? O nome do Usuário, por exemplo?



Tipo assim, tenho minha tela de registro, Nome, E-mail e Senha;

**Programa pronto;
*Usuário 1 se registra, coloca Nome, senha e um e-mail(teste@gmail.com) - Registra

*Usuário 2 vai lá se registrar, coloca as coisas, mas ele acaba colocando também o e-mail(teste@gmail.com) - Repetido

*Um algorítimo que está no banco de dados, vai acessar o banco de dados e olhar se o e-mail = teste@gmail.com já existe, se existe irá parar a operação e limpar os campos, com um alerta de e-mail já registrado, caso não, mostra uma mensagem de sucesso e entra na próxima página

Basicamente é isso, que eu quero fazer, Lourenço


Olá,

Supondo que sua aplicação seja Windows Forms e que...
UsuarioContext seja o contexto.
txtNome, txtEmail, txtSenha sejam os textboxs do Nome, Email e Senha, respectivamente.
Usuario seja a classe do usuário.
Usuarios seja a tabela.
Tela seja a segunda tela que será aberta ao usuário se cadastrar.

using (var contexto = new UsuarioContext())
{
     // Tentará encontrar o primeiro registro que o Email for o mesmo que o digitado pelo usuário. Caso retorne nulo, ou seja não encontre...
     if (contexto.Usuarios.Where(x => x.Email == txtEmail.Text).FirstOrDefault() == null)
     {
               Usuario usuario = new Usuario();
               // Atribuição dos campos
               usuario.Nome = txtNome.Text;
               usuario.Email = txtEmail.Text;
               usuario.Senha = txtSenha.Text;
               contexto.Add(usuario); // Adiciona o Usuário
               contexto.SaveChanges(); // Salva as alterações no Banco de Dados
               
               Tela tela = new Tela();
                tela.Show(); // Abrir o outro form
                this.Hide(); // Fechar o form atual
     }
     else // Caso contrário, ou seja, caso encontre um usuário com o mesmo email
     {
          MessageBox.Show("Usuário já existente", "Erro ao Cadastrar Usuário", MessageBoxButtons.OK, MessageBoxIcon.Error); // Exibe mensagem de erro
          // Limpar os campos
          txtNome.Clear();
          txtEmail.Clear();
          txtSenha.Clear();
          txtUsuario.Focus(); // O cursor é redirecionado
     }
}


Sugestões de melhorias para o sistema:
- Verificar se há campos obrigatórios vazios e, caso tenha, exiba mensagem de erro.
- Criar textbox para Confirmar Senha e, verificar se a Senha é igual a Confirmação de Senha. Em caso negativo, exibirá mensagem de erro.
- Permitir que o usuário, quando já estiver logado no sistema, possa alterar sua senha.

Espero ter ajudado!
Caso tenha mais alguma dúvida, farei o possível para ajudá-lo!




Não saquei muito no "UsuarioContext()" não entendi o que fazer

Hm, então acho que terei que te explicar várias coisas do programa para você compreender melhor...
Se você puder, me adiciona no Discord (Lourenço Lima#0486), por favor! Daí te explico direitinho como pode ser feito!
GOSTEI 0
POSTAR