none
Verificar se já existe cadastro no banco (ACCESS) RRS feed

  • 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.

    domingo, 5 de janeiro de 2014 22:22

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!

    Fulvio Cezar Canducci Dias

    domingo, 5 de janeiro de 2014 23:59

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!

    Fulvio Cezar Canducci Dias

    domingo, 5 de janeiro de 2014 23:59
  • 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.

    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.

    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).aspx

    Qual 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!!!



    Fulvio Cezar Canducci Dias

    segunda-feira, 6 de janeiro de 2014 12:55