C# - Adicionar Clientes Verificação

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
 
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
 
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
 
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 ...
 
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:
Back
Topo