Usuário com melhor resposta
Botão Excluir - GridView

Pergunta
-
Boa Tarde Pessoal,
Eu sou um iniciante em programação e estou criando um programa para controle de horas de serviço no escritório de engenharia onde trabalho(Não sou programador, sou somente um engenheiro compreender esse mundo da programação rs.).
Pois bem, criei um banco de dados sql com algumas tabelas com as quais quero gerenciar meus dados, o botão incluir dados eu consegui fazer, mas o botão excluir...
Por favor deem uma olhada no código do botão abaixo:
private void delCliente_Click(object sender, EventArgs e) { try { string sql = "Delete FROM clientes Where nomeCliente=@nome"; using (SqlConnection conn = new SqlConnection(conexao)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { int linha = dataGridView1.CurrentRow.Index; string codigodel = dataGridView1.Rows[linha].Cells["nomeCliente"].ToString(); cmd.Parameters.AddWithValue("@nome", codigodel); cmd.ExecuteNonQuery(); MessageBox.Show("Cliente apagado com sucesso"); Form2_Load(null, null); } conn.Close(); } } catch (Exception ex1) { MessageBox.Show(ex1.Message); throw; }
Simplesmente o botão faz nada, ele não apaga o dado que está selecionado na gridview e muito menos no BD.
Agradeço desde já a colabração.
Att,
Leandro Martins
- Editado Leandro A. Martins quarta-feira, 20 de novembro de 2013 19:04 Inserir Código
Respostas
-
Fulvio,
Você criou um Int idcliente para um campo que é string. Como eu converto? no meu BD o clienteID é um campo int
private void delCliente_Click(object sender, EventArgs e) { try { string sql = "Delete FROM clientes Where idCliente=@idCliente"; using (SqlConnection conn = new SqlConnection(conexao)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { int linha = dataGridView1.CurrentRow.Index; int idCliente = int.Parse(dataGridView1.Rows[linha].Cells[0].ToString()); cmd.Parameters.AddWithValue("@idCliente", idCliente); if (cmd.ExecuteNonQuery() > 0){ MessageBox.Show("Cliente apagado com sucesso"); Form2_Load(null, null); } } conn.Close(); } } catch (Exception ex1) { MessageBox.Show(ex1.Message); throw; } }
já coloquei ai esqueci mesmo!
comando int.Parse
- Marcado como Resposta Leandro A. Martins quinta-feira, 21 de novembro de 2013 12:48
-
Muito Obrigado pela ajuda,
acabei mudando meu código e fiz assim:
private void delCliente_Click(object sender, EventArgs e) { try { string sql = "Delete FROM clientes Where clienteID=@clienteID"; using (SqlConnection conn = new SqlConnection(conexao)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@clienteID", dataGridView1.CurrentRow.Cells[1].Value); if (cmd.ExecuteNonQuery() > 0) { MessageBox.Show("Cliente apagado com sucesso"); Form2_Load(null, null); } } conn.Close(); } } catch (Exception ex1) { MessageBox.Show(ex1.Message); throw; } } } }
O que eu estava fazendo de errado era considerar o clienteID como 0 e o mesmo é 1.
Mas mesmo assim muito GRATO MESMOOOOO
- Editado Leandro A. Martins quinta-feira, 21 de novembro de 2013 12:47
- Marcado como Resposta Leandro A. Martins quinta-feira, 21 de novembro de 2013 12:48
Todas as Respostas
-
-
-
Coloque um breakpoint no cmd.ExecuteNonQuery() e veja o cmd.CommandText teste essa sql diretamente no sql server e veja que provavelmente o parametro passado não é encontrado no BD e não faz nada !
O parametro que voce passa deve ser conter no BD para apagar ou você apaga pelo ID sugestão do Fulvio, porém seu codigo esta correto somente o parametro que está passando que não deve existir no BD.
-
Eu acho que vai funcionar!
Código:
private void delCliente_Click(object sender, EventArgs e) { try { string sql = "Delete FROM clientes Where idCliente=@idCliente"; using (SqlConnection conn = new SqlConnection(conexao)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { int linha = dataGridView1.CurrentRow.Index; int idCliente = dataGridView1.Rows[linha].Cells[0].ToString(); cmd.Parameters.AddWithValue("@idCliente", idCliente); if (cmd.ExecuteNonQuery() > 0){ MessageBox.Show("Cliente apagado com sucesso"); Form2_Load(null, null); } } conn.Close(); } } catch (Exception ex1) { MessageBox.Show(ex1.Message); throw; } }
Percebe que eu coloque idCliente na sua SQL é esse o campo referido da sua Tabela no banco ? se for deixa assim se não mude só na SQL esse idCliente para o que for na sua tabela e rode a aplicação!
Também coloque Cells[0] (Cells do indice Zero sendo a primeira coluna da sua DataGridView !!!)
Se tiver assim vai funcionar!
-
Fulvio,
Você criou um Int idcliente para um campo que é string. Como eu converto? no meu BD o clienteID é um campo int
- Editado Leandro A. Martins quinta-feira, 21 de novembro de 2013 11:58
-
Fulvio,
Você criou um Int idcliente para um campo que é string. Como eu converto? no meu BD o clienteID é um campo int
private void delCliente_Click(object sender, EventArgs e) { try { string sql = "Delete FROM clientes Where idCliente=@idCliente"; using (SqlConnection conn = new SqlConnection(conexao)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { int linha = dataGridView1.CurrentRow.Index; int idCliente = int.Parse(dataGridView1.Rows[linha].Cells[0].ToString()); cmd.Parameters.AddWithValue("@idCliente", idCliente); if (cmd.ExecuteNonQuery() > 0){ MessageBox.Show("Cliente apagado com sucesso"); Form2_Load(null, null); } } conn.Close(); } } catch (Exception ex1) { MessageBox.Show(ex1.Message); throw; } }
já coloquei ai esqueci mesmo!
comando int.Parse
- Marcado como Resposta Leandro A. Martins quinta-feira, 21 de novembro de 2013 12:48
-
Muito Obrigado pela ajuda,
acabei mudando meu código e fiz assim:
private void delCliente_Click(object sender, EventArgs e) { try { string sql = "Delete FROM clientes Where clienteID=@clienteID"; using (SqlConnection conn = new SqlConnection(conexao)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@clienteID", dataGridView1.CurrentRow.Cells[1].Value); if (cmd.ExecuteNonQuery() > 0) { MessageBox.Show("Cliente apagado com sucesso"); Form2_Load(null, null); } } conn.Close(); } } catch (Exception ex1) { MessageBox.Show(ex1.Message); throw; } } } }
O que eu estava fazendo de errado era considerar o clienteID como 0 e o mesmo é 1.
Mas mesmo assim muito GRATO MESMOOOOO
- Editado Leandro A. Martins quinta-feira, 21 de novembro de 2013 12:47
- Marcado como Resposta Leandro A. Martins quinta-feira, 21 de novembro de 2013 12:48