Usuário com melhor resposta
Verificar se já existe cadastro no banco (ACCESS)

Pergunta
-
Boa noite amigos,
Estou construindo um programa e preciso verificar se já existe cadastros com o mesmo 'NOME' de usuário;
Esse é meu código;
private void btAdicionar_Click(object sender, EventArgs e) { if (txtUsuario.Text == string.Empty && txtSenha.Text == string.Empty) { MessageBox.Show("Preencha todos os campos", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { string connOleDb = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Users\Zaramella\Downloads\programa\bin\Debug\Data\dbprograma.mdb"; OleDbConnection conn = new OleDbConnection(connOleDb); conn.Open(); string connCode = "INSERT INTO tbFuncionarios (usuario, senha) VALUES (@usuario, @senha)"; OleDbCommand cmd = new OleDbCommand(connCode, conn); cmd.Parameters.Add("@usuario", OleDbType.Char).Value = txtUsuario.Text; cmd.Parameters.Add("@senha", OleDbType.Char).Value = txtSenha.Text; try { int count = cmd.ExecuteNonQuery(); MessageBox.Show("Funcionário Cadastrado!", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information); txtUsuario.Text = ""; txtSenha.Text = ""; } catch (OleDbException ex) { MessageBox.Show(ex.Message); } finally { conn.Close(); } } }
Como faço para colocar uma verificação se já existe usuário com o mesmo nome?
Obrigado,
Até mais.
Respostas
-
private void btAdicionar_Click(object sender, EventArgs e) { if (txtUsuario.Text == string.Empty && txtSenha.Text == string.Empty) { MessageBox.Show("Preencha todos os campos", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { string connOleDb = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Users\Zaramella\Downloads\programa\bin\Debug\Data\dbprograma.mdb"; OleDbConnection conn = new OleDbConnection(connOleDb); conn.Open(); // OleDbCommand verifica = conn.CreateCommand(); verifica.CommandType = CommandType.Text; verifica.CommandText = string.Format("select count(*) as Qtde From tbFuncionarios WHERE usuario='{0}'", txtUsuario.Text); int Qtde = int.Parse(verifica.ExecuteScalar().ToString()); verifica.Dispose(); if (Qtde == 0) { // não tem ninguém então continua gravando // string connCode = "INSERT INTO tbFuncionarios (usuario, senha) VALUES (@usuario, @senha)"; OleDbCommand cmd = new OleDbCommand(connCode, conn); cmd.Parameters.Add("@usuario", OleDbType.Char).Value = txtUsuario.Text; cmd.Parameters.Add("@senha", OleDbType.Char).Value = txtSenha.Text; try { int count = cmd.ExecuteNonQuery(); MessageBox.Show("Funcionário Cadastrado!", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information); txtUsuario.Text = ""; txtSenha.Text = ""; } catch (OleDbException ex) { MessageBox.Show(ex.Message); } finally { conn.Close(); } } else { conn.Close(); MessageBox.Show("Usuário existente", "Usuário", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
Eu acho que resolve!- Sugerido como Resposta Fulvio Cezar Canducci Dias segunda-feira, 6 de janeiro de 2014 00:00
- Marcado como Resposta Guilherme Zaramella segunda-feira, 6 de janeiro de 2014 03:48
Todas as Respostas
-
private void btAdicionar_Click(object sender, EventArgs e) { if (txtUsuario.Text == string.Empty && txtSenha.Text == string.Empty) { MessageBox.Show("Preencha todos os campos", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { string connOleDb = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Users\Zaramella\Downloads\programa\bin\Debug\Data\dbprograma.mdb"; OleDbConnection conn = new OleDbConnection(connOleDb); conn.Open(); // OleDbCommand verifica = conn.CreateCommand(); verifica.CommandType = CommandType.Text; verifica.CommandText = string.Format("select count(*) as Qtde From tbFuncionarios WHERE usuario='{0}'", txtUsuario.Text); int Qtde = int.Parse(verifica.ExecuteScalar().ToString()); verifica.Dispose(); if (Qtde == 0) { // não tem ninguém então continua gravando // string connCode = "INSERT INTO tbFuncionarios (usuario, senha) VALUES (@usuario, @senha)"; OleDbCommand cmd = new OleDbCommand(connCode, conn); cmd.Parameters.Add("@usuario", OleDbType.Char).Value = txtUsuario.Text; cmd.Parameters.Add("@senha", OleDbType.Char).Value = txtSenha.Text; try { int count = cmd.ExecuteNonQuery(); MessageBox.Show("Funcionário Cadastrado!", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information); txtUsuario.Text = ""; txtSenha.Text = ""; } catch (OleDbException ex) { MessageBox.Show(ex.Message); } finally { conn.Close(); } } else { conn.Close(); MessageBox.Show("Usuário existente", "Usuário", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
Eu acho que resolve!- Sugerido como Resposta Fulvio Cezar Canducci Dias segunda-feira, 6 de janeiro de 2014 00:00
- Marcado como Resposta Guilherme Zaramella segunda-feira, 6 de janeiro de 2014 03:48
-
Amigo,
funcionou perfeitamente.
Porém se não for lhe incomodar, eu gostaria que me explicasse como você fez essa verificação;
OleDbCommand verifica = conn.CreateCommand(); // Qual a função de CreateCommand ? verifica.CommandType = CommandType.Text; // Qual a função de CommandType.Text ? verifica.CommandText = string.Format("select count(*) as Qtde From tbFuncionarios WHERE usuario='{0}'", txtUsuario.Text); // esse "Qtde" no select é um comando válido ? o access reconhece "Qtde" como algum comando de banco de dados ? int Qtde = int.Parse(verifica.ExecuteScalar().ToString()); verifica.Dispose(); if (Qtde == 0)
Obrigado e boa noite.
-
Amigo,
funcionou perfeitamente.
Porém se não for lhe incomodar, eu gostaria que me explicasse como você fez essa verificação;
OleDbCommand verifica = conn.CreateCommand(); // Qual a função de CreateCommand ? verifica.CommandType = CommandType.Text; // Qual a função de CommandType.Text ? verifica.CommandText = string.Format("select count(*) as Qtde From tbFuncionarios WHERE usuario='{0}'", txtUsuario.Text); // esse "Qtde" no select é um comando válido ? o access reconhece "Qtde" como algum comando de banco de dados ? int Qtde = int.Parse(verifica.ExecuteScalar().ToString()); verifica.Dispose(); if (Qtde == 0)
Obrigado e boa noite.
Qual a função de CreateCommand !!!
Ele cria um OleDbCommand com as configuração de conexão de conn (no seu caso a variável de conexao é conn) Link: http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlconnection.createcommand(v=vs.110).aspxQual a função de CommandType.Text!
Ele é um enum que configura o tipo de Comando enviado para o banco de dados, podendo ser Text ( que é o padrão), Table que só digita o nome da tabela e StoredProcedure que é para procedure de Banco (eu coloco sempre como codificação dos meus códigos para ficar bem explicativos, mas, isso é meio padrão de desenvolvimento, se você não colocar sempre vai ter Text ) Link: http://msdn.microsoft.com/pt-br/library/system.data.commandtype(v=vs.110).aspx
esse "Qtde" no select é um comando válido ? o access reconhece "Qtde" como algum comando de banco de dados ?
A Qtde é um Alias (apelido) que eu coloquei como forma de trazer para o Scalar apenasr esse campo!
Isso é SQL geral de todos os bancos e funciona para todos dessa forma, não é funcão especifica não!
é um SQL Simples inclusive!!!
- Sugerido como Resposta Fulvio Cezar Canducci Dias segunda-feira, 6 de janeiro de 2014 13:01