Como não registrar um registro repetido no Banco de Dados - MySql - C Sharp - Visual Studio 2019
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
Curtidas 0
Respostas
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
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
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
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
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
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
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