1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C# - Adicionar Clientes Verificação

Discussão em 'Programação' iniciada por khador, 28 de Maio de 2012. (Respostas: 7; Visualizações: 1292)

  1. khador

    khador Power Member

    Boas eu estou a fazer um programa para a PAP preciso de uma ajuda, tenho este codigo que adiciona clientes:

    //codigo

    private void btnGuardarCliente_Click(object sender, EventArgs e)
    {
    //Abrir a connection
    cnSql.Open();

    //Criar o Data Command para a Query
    SqlCommand cmd = new SqlCommand("INSERT INTO cliente(Nome, Idade, Morada, Telefone, Contribuinte, Estado) VALUES (@Nome, @Idade, @Morada, @Telefone, @Contribuinte, @Estado)", cnSql);

    //Receber os dados pelos colunas da tabela Cliente
    cmd.Parameters.Add(new SqlParameter("@nome", txtNomeClientes.Text));
    cmd.Parameters.Add(new SqlParameter("@idade", txtIdade.Text));
    cmd.Parameters.Add(new SqlParameter("@morada", txtMorada.Text));
    cmd.Parameters.Add(new SqlParameter("@telefone", txtTelefone.Text));
    cmd.Parameters.Add(new SqlParameter("@contribuinte", txtContribuinte.Text));
    cmd.Parameters.Add(new SqlParameter("@estado", txtEstadoClientes.Text));

    //Executa a query
    cmd.ExecuteNonQuery();

    //Mensagem de confirmação
    MessageBox.Show("Cliente inserido com sucesso!", "Cliente adicionado");

    //actualizar o dataset
    this.clienteTableAdapter.Fill(this.bdestetica_DataDataSet2.Cliente);

    //Fechar a connection
    cnSql.Close();

    }

    Portanto eu queria fazer uma verificação que se houvesse ja aquele Cliente com aquele Nome não deixasse adicionar

    Cumps obrigado :D
     
  2. khador

    khador Power Member

    até agora tenho isto:

    //Criar a Query para Verificar o campo com a Base de Dados
    SqlCommand cmdVerificar = new SqlCommand("SELECT count(nome) FROM Cliente WHERE Nome='" + txtNomeClientes+"'",cnSql);

    //Abrir a conexão
    cnSql.Open();

    //Converter o valor do campo para int para permitir a comparaçao atraves do Count
    int cliNome = Convert.ToInt32(cmdVerificar.ExecuteScalar());

    //Verificar se existe é maior ou igual a 1
    if (cliNome >= 1)
    {

    MessageBox.Show("Este Cliente é Inválido ou já existe.", "Erro ao Adicionar Cliente", MessageBoxButtons.OKCancel);

    }
    else
    {
    //Criar o Data Command para a Query
    SqlCommand cmd = new SqlCommand("INSERT INTO cliente(Nome, Idade, Morada, Telefone, Contribuinte, Estado) VALUES (@Nome, @Idade, @Morada, @Telefone, @Contribuinte, @Estado)", cnSql);

    //Receber os dados pelos colunas da tabela Cliente
    cmd.Parameters.Add(new SqlParameter("@nome", txtNomeClientes.Text));
    cmd.Parameters.Add(new SqlParameter("@idade", txtIdade.Text));
    cmd.Parameters.Add(new SqlParameter("@morada", txtMorada.Text));
    cmd.Parameters.Add(new SqlParameter("@telefone", txtTelefone.Text));
    cmd.Parameters.Add(new SqlParameter("@contribuinte", txtContribuinte.Text));
    cmd.Parameters.Add(new SqlParameter("@estado", txtEstadoClientes.Text));

    //Executa a query
    cmd.ExecuteNonQuery();

    //Mensagem de confirmação
    MessageBox.Show("Cliente inserido com sucesso!", "Cliente adicionado");

    //actualizar o dataset
    this.clienteTableAdapter.Fill(this.bdestetica_DataDataSet2.Cliente);

    //Fechar a connection
    cnSql.Close();

    Um professor meu da disciplina disse que era por aqui mas nao faz nada
     
  3. khador

    khador Power Member

    obrigado vou exprimentar hoje, mas o meu professor disse que a estrutura estava certa está é algo a funcional mal ali no meu codigo, mas obrigqado na mesma
     
  4. DarkT

    DarkT Power Member

    Porque e que nao metes o nome como unique e depois caso ja exista pessoas com o mesmo nome ele lança excepção e tens isso num bloco
    try{codigo sql}catch{msgbox("ja existe uma pessoa com esse nome")}

    ou entao enves de fazeres esse count podes simplesmete fazer um select normal e ves se o dataset que retorna nao tem resultados senao tiver e porque nao existe e pode retornar se existir escreves a msg ...
     
  5. khador

    khador Power Member

    gostei mais da tua ideia Dark e usando a tua segunda opçao poderei usar a query ai q tenho no codigo?
     
  6. DarkT

    DarkT Power Member

    SqlCommand cmd = new SqlCommand("SELECT * FROM Cliente WHERE (Nome= @NomeClientes)");
    cmd.Parameters.AddWithValue("@NomeClientes",VarNomeCliente);

    Usa esta query...usa sempre o binding de parâmetros para não sofreres de sql injection!

    Qualquer cena apita :)
     
    Última edição: 30 de Maio de 2012
  7. khador

    khador Power Member

    ainda nai cheguei la :X
     
  8. khador

    khador Power Member

    resolvido!
     

Partilhar esta Página