Inserir, excluir, alterar e gravar alterações

1 resposta
P

Olá!!!
Estou com serios problemas na criação de uma tela pra cadastro. Será que podem me ajudar???
Vou passar o codigo pra voces, pois não consigo excluir, alterar e nem gravar alterações. Somente incluir. Eu sei que vcs vão me chamar de burro mais eu não ligo não. Eu não estou conseguindo nem arrumar os campos na tela. Espero que possam me ajudar.

Lá vai o codigo:

import <a href="http://java.io">java.io</a>.<em>;

import java.awt.</em>;

import java.awt.event.<em>;

import javax.swing.</em>;

import java.sql.*;

import javax.swing.JTable;

import javax.swing.table.TableModel;

import javax.swing.table.DefaultTableModel;

import javax.swing.event.TableModelEvent;

import javax.swing.event.TableModelListener;
public class CadCli extends JFrame

{

private JLabel       LNome;

private JTextField   tNome;

private JLabel       LFantasia;

private JTextField   tFantasia;

private JLabel       LCpf;

private JTextField   tCpf;

private JLabel       LIe;

private JTextField   tIe;

private JLabel       LEndereco;

private JTextField   tEndereco;

private JLabel       LBairro;

private JTextField   tBairro;

private JLabel       LCidade;

private JTextField   tCidade;

private JLabel       LEstado;

private JComboBox    tEstado;

private JLabel       LCep;

private JTextField   tCep;

private JLabel       LTelefone;

private JTextField   tTelefone;

private JLabel       LEmail;

private JTextField   tEmail;

private JButton      bexcluir;

private JButton      balterar;

private JButton      bgravar;

private JButton      bincluir;

private JScrollPane  js;

private Connection  conex; //declara o objeto conex

private DefaultTableModel aModel;

private JTable  aTable;

private JList   lista;

private String  itens[];
public CadCli()
{
	super("Cadastro de Cliente");
	Container ct = getContentPane();
	ct.setLayout(new GridLayout(9,10));

	// Tenta Carregar o drive do MySql
	try
	{
		Class.forName("com.mysql.jdbc.Driver");
	}
	catch (ClassNotFoundException e)
	{
		System.out.println (" Driver não encontrado verifique o classpath");
	}
	// Tenta estabelecer a conexão com o database

	try
	{
		String ServerHost = "localhost";
		String dbmysql = "dbpedido";
		String Username = "root";
		String Password = "gabriel";
		conex = DriverManager.getConnection ("jdbc:mysql://"+ServerHost+"/"+dbmysql,Username,Password);
	}
	catch (Exception sqlEx)
	{
		System.out.println ("Conexão Falhou, verifique os parametros");
	}

	lista = new JList(montalista());
	lista.setVisibleRowCount(8);
	Font f1 = new Font ("Courier", Font.PLAIN,14);
	lista.setFont(f1);
	js = new JScrollPane(lista);
	ct.add(js);

	LNome = new JLabel ("Nome/Razão Social:");
	ct.add (LNome);
	tNome = new JTextField();
	ct.add (tNome);

	LFantasia = new JLabel ("Nome Fantasia:");
	ct.add (LFantasia);
	tFantasia = new JTextField();
	ct.add (tFantasia);

	LCpf = new JLabel ("CPF/CNPJ:");
	ct.add (LCpf);
	tCpf = new JTextField();
	ct.add (tCpf);

	LIe = new JLabel ("RG/IE:");
	ct.add (LIe);
	tIe = new JTextField();
	ct.add (tIe);

	LEndereco = new JLabel ("Endereço:");
	ct.add (LEndereco);
	tEndereco = new JTextField();
	ct.add (tEndereco);

	LBairro = new JLabel ("Bairro:");
	ct.add (LBairro);
	tBairro = new JTextField();
	ct.add (tBairro);

	LCidade = new JLabel ("Cidade:");
	ct.add (LCidade);
	tCidade = new JTextField();
	ct.add (tCidade);

	LEstado = new JLabel ("Estado:");
	ct.add (LEstado);
	String conteudo[] = {"--Selecione--","RS","SC","PR","SP","RJ","ES","MG","MS","MT","PE","GO","TO","BH","PI","CE","PB","MA","AM","MP","AL","RN","SE","PA","AC","RR","RO",};
	tEstado = new JComboBox(conteudo);
	ct.add (tEstado);

	LCep = new JLabel ("CEP:");
	ct.add (LCep);
	tCep = new JTextField();
	ct.add (tCep);

	LTelefone = new JLabel ("Telefone:");
	ct.add (LTelefone);
	tTelefone = new JTextField();
	ct.add (tTelefone);

	LEmail = new JLabel ("E-mail:");
	ct.add (LEmail);
	tEmail = new JTextField();
	ct.add (tEmail);

	
	
    EventoB eb = new EventoB ();

	bincluir = new JButton ("Incluir");
	bincluir.addActionListener (eb);
	ct.add (bincluir);

	bexcluir = new JButton ("Excluir");
	bexcluir.addActionListener (eb);
	ct.add (bexcluir);

	balterar = new JButton ("Alterar");
	balterar.addActionListener (eb);
	ct.add (balterar);

	bgravar = new JButton ("Gravar Alterações");
	bgravar.addActionListener (eb);
	ct.add (bgravar);

	setSize (545,315);
	setVisible (true);

}

// Eventos dos Botões Incluir e Excluir

private class EventoB implements ActionListener
{
	public void actionPerformed (ActionEvent event)
	{
		if (event.getSource()==bincluir)
		{
			try
			{
				String sql = "insert into cliente (nome, nome_fantasia,endereco,cpf_cnpj,rg_ie,bairro,cidade,estado,cep,email,telefone) values (?,?,?,?,?,?,?,?,?,?,?)" ;
				PreparedStatement vs = conex.prepareStatement(sql);
				vs.setString(1,tNome.getText());
				vs.setString(2,tFantasia.getText());
				vs.setString(3,tEndereco.getText());
				vs.setString(4,tCpf.getText());
				vs.setString(5,tIe.getText());
				vs.setString(6,tBairro.getText());
				vs.setString(7,tCidade.getText());
				vs.setString(8,tEstado.getSelectedItem().toString());
				vs.setString(9,tCep.getText());
				vs.setString(10,tEmail.getText());
				vs.setString(11,tTelefone.getText());
				vs.executeUpdate();
			}
			catch (Exception sqlEx){}
			limpar();
		}
		if (event.getSource()==bexcluir)
		{
			try
			{
				String sid_cliente = lista.getSelectedValue().toString();
				PreparedStatement st = conex.prepareStatement ("delete from cliente where id_cliente = ?");
				st.setString (1,sid_cliente.substring(0,sid_cliente.indexOf("-")));
				st.executeUpdate();
				lista.setListData(montalista());
			}
			catch (Exception sqlEx){}
		}

		// Trata eventos dos botões Alterar e Gravar Alterações
		if (event.getSource()==balterar)
		{
			try
			{
				String sid_cliente = lista.getSelectedValue().toString();
				PreparedStatement st = conex.prepareStatement ("select * from cliente where id_cliente = ?");
				st.setString (1,sid_cliente.substring(0,sid_cliente.indexOf("-")));
				ResultSet rs = st.executeQuery();
				lista.setListData(montalista());
				while (rs.next());
				{

					tNome.setText(rs.getString("Nome/Razão Social"));
					tFantasia.setText(rs.getString("Nome Fantasia"));
					tEndereco.setText(rs.getString("Endereço"));
					tCpf.setText(rs.getString("CPF/CNPJ"));
					tIe.setText(rs.getString("RG/IE"));
					tBairro.setText(rs.getString("Bairro"));
					tCidade.setText(rs.getString("Cidade"));
					tEstado.setSelectedItem(rs.getString("Estado"));
					tCep.setText(rs.getString("CEP"));
					tEmail.setText(rs.getString("Email"));
					tTelefone.setText(rs.getString("Telefone"));
				}
			}
			catch (Exception sqlEx){}
		}
		if (event.getSource()==bgravar)
		{
			try
			{
				PreparedStatement st = conex.prepareStatement ("update cliente set id_cliente=?, nome=?, nome_fantasia=?,endereco=?,cpf_cnpj=?,rg_ie=?,bairro=?,cidade=?,estado=?,cep=?,email=?,telefone=?");
				if (tNome.getText()!=null)
				{
					st.setString(1,tNome.getText());
					st.setString(2,tFantasia.getText());
					st.setString(3,tEndereco.getText());
					st.setString(4,tCpf.getText());
					st.setString(5,tIe.getText());
					st.setString(6,tBairro.getText());
					st.setString(7,tCidade.getText());
					st.setString(8,tEstado.getSelectedItem().toString());
					st.setString(9,tCep.getText());
					st.setString(10,tEmail.getText());
					st.setString(11,tTelefone.getText());
					st.executeUpdate();
					lista.setListData(montalista()); // Reconstroi a lista a partir do banco de dados
					limpar();
				}
			}
			catch (Exception sqlEx){}
		}	}
}
// Monta a lista de registros
protected String [] montalista()
{
	String itens[] = new String [50];
	try
	{
		PreparedStatement st = conex.prepareStatement ("select * from cliente");
		ResultSet rs = st.executeQuery();
		int i = 0;
        while (rs.next());
        {
			String linha = rs.getString ("id_cliente")+"-"
			+rs.getString("nome")+"-"
			+rs.getString("nome_fantasia")+"-"
			+rs.getString("endereco")+"-"
			+rs.getString("cpf_cnpj")+"-"
			+rs.getString("rg_ie")+"-"
			+rs.getString("bairro")+"-"
			+rs.getString("cidade")+"-"
			+rs.getString("estado")+"-"
			+rs.getString("cep")+"-"
			+rs.getString("email")+"-"
			+rs.getString("telefone");
			itens[i] = linha;
			i ++;
        }
	}
	catch (Exception sqlEx){}
	return itens;
}
// procedure para limpar o formulario do cadastro
protected void limpar()
{
	tNome.setText("");
	tFantasia.setText("");
	tEndereco.setText("");
	tCpf.setText("");
	tIe.setText("");
	tBairro.setText("");
	tCidade.setText("");
	tEstado.setSelectedIndex(0);
	tCep.setText("");
	tEmail.setText("");
	tTelefone.setText("");
}

// Metodo Principal
public static void main (String args[])
{
	CadCli f = new CadCli();
	f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}

}

Desde já agradeço a paciencia.

1 Resposta

GabrielCorpse

E aí cara, beleza?

Primeiramente ninguém aqui te chamará de burro, ok?
Se possível coloque seu código dentro da tag code, senão fica quase impossível de ler, identação também é importante.

Uma dica, nunca ignore as exceptions, nunca; caso contrário será difícil saber qual o problema.
O primeiro problema que notei foi no método montalista(), ele possui um erro muito difícil de detectar: quando você faz o while( rs.next() ) não coloque ponto e vírgula no final dessa linha, senão ele apresentará uma java.sql.SQLException: After end of result set, revise todos os while’s da aplicação e remova o ponto e vírgula.
Resolvido isso ele fará a listagem correta no JList.

No evento do botão alterar os campos estão com nomes distintos de quando você insere os registros, arrume o nome desses campos senão as colunas não serão localizadas no banco de dados.
No evento do botão gravar falta um argumento, você coloca 12 ‘?’, mas seta apenas 11 valores.O código SQL do update também está errado, dessa forma pode até funciona, mas igualará todos os registros no banco, nesse caso faça o WHERE com id_cliente.

Esses foram os primeiros erros que vi.
Se quiser melhorar a qualidade do seu código dê uma olhada depois no padrão MVC.
Espero ter ajudado.

Abraço.

Criado 6 de setembro de 2009
Ultima resposta 6 de set. de 2009
Respostas 1
Participantes 2