Sql inserção de Dados

3 respostas
A

Olá a todos!!
Estou com um problema no minha inserção de dados, o código executa normal, quando vou inserir dados no Frame e gravar ele da erro, mas não mostra onde esta o erro.
Se puderem me ajudar, sou novato em Java, estou usando o Mysql Workbench 5.6 SE

Desde já agradeço a atenção de todos que vierem a ler este topico.

package Dados;


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Observable;


public class Registro extends Observable {
	
	
 String cor;
 String marca;
 String Placa;
 String modelo;
 String AnoFab;
 String Categoria;
 String ID;
 String Dados;
 public String [] op;
 public Object lista;
private Object moto;
private Object jScrollPane;
 public static ResultSet rs;


private static Connection conn;
private static Statement stmt;



	

 public String [] getop() {
		return op;
	}
	public void setop(String[] op) {
		this.op = op;
	}

	
	public String getCor() {
		return cor;
	}
	public void setCor(String cor) {
		this.cor = cor;
	}
	public String getMarca() {
		return marca;
	}
	public void setMarca(String marca) {
		this.marca = marca;
	}
	public String getModelo() {
		return modelo;
	}
	public void setModelo(String modelo) {
		this.modelo = modelo;
	}
	public String getAnoFab() {
		return AnoFab;
	}
	public void setAnoFab(String string) {
		this.AnoFab = string;
	}

	public String getCategoria() {
		return Categoria;
	}
	public void setCategoria(String Categoria) {
		this.Categoria = Categoria;
	}

	
	public String getID() {
		return ID;
	}
	public void setID(String ID) {
		this.ID = ID;
	}
	
	public String getDados() {
		return Dados;
	}
	
	public void setDados(String Dados) {
		this.Dados = Dados;
	}
	
	
	public  void inserir() throws SQLException {
		
		SQL dao = new SQL();
		dao.inserir(ID,modelo,marca,cor,AnoFab,Categoria);
		

	}

	
	
	
	
	public void buscar() throws Exception {
		SQL dao = new SQL();
		
		dao.buscar(ID);
		SQL.carregadados(this);
	

	}

	public void alterar() throws Exception {
		SQL dao = new SQL();
		
		dao.altera(ID,modelo,marca,cor,AnoFab,Categoria);
	
		
	}

	public void excluir() throws Exception {
		SQL dao = new SQL();
		dao.excluir(ID);

	}

	
	
public  ArrayList<Registro> mostra() throws Exception{
	
	
		
	String comando  = "select * from moto";
	
	    
		conn = SQL.conectar();
		stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery(comando);
		ArrayList<Registro> lista = new ArrayList<Registro>();
		
		
	while (rs.next()) {			
		Registro registro1 = new Registro();
		registro1.setID(rs.getString("id"));
		registro1.setModelo(rs.getString("placa"));
		registro1.setModelo(rs.getString("modelo"));
		registro1.setMarca(rs.getString("marca"));
		registro1.setCor(rs.getString("cor"));
		registro1.setAnoFab(rs.getString("AnoFab"));
		registro1.setCategoria(rs.getString("Categoria"));
		
		
		lista.add(registro1);
	
	}
	
	
	return lista;
}


}



package Dados;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import javax.swing.JOptionPane;

public class SQL {

	public static Connection conn;
	private static Statement stmt;
	private static ResultSet busca;
	private static ResultSet rsDados;
	static Registro reg = new Registro();
	final String sqlCriar ="insert into moto (placa, modelo,marca,AnoFab,cor,categoria) values (?,?,?,?,?,?)";

	public static void main(String[] args) {
		conectar();

	}

	public static Connection conectar() {

		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/test?";
			String usuario = "root";
			String senha = "12345";
			conn = DriverManager.getConnection(url, usuario, senha);

		} catch (ClassNotFoundException e) {

			System.err.println("Nao conectou o driver no banco.Erro de Driver");
		}

		catch (SQLException e) {

			System.err.println("Erro ao conectar.Erro sql" + e.getMessage());
		}
		

				
		return conn;

	}
	public void desconectar() {

		try {
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void altera(String ID, String modelo, String marca, String cor,
			String AnoFab, String Categoria) throws Exception {
		conectar();
		try {
			stmt = conn.createStatement();
			stmt.executeUpdate(("update moto set id=" + "'" + ID
					+ "',modelo=" + "'" + modelo + "'," + "marca=" + "'"
					+ marca + "',cor=" + "'" + cor + "'," + "anoFab=" + "'"
					+ AnoFab + "',categoria=" + "'" + Categoria + "'where id='"
					+ ID + "'"));

			JOptionPane.showMessageDialog(null,
					"Alterações feitas com sucesso!", "Aviso!",
					JOptionPane.INFORMATION_MESSAGE);
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null,
					"Error Ao Gravar as Alterações!", "Error!",
					JOptionPane.INFORMATION_MESSAGE);

		}
	}

	// =========================================================================================================
	public void inserir(String placa, String modelo, String marca, String cor,
			String AnoFab, String Categoria)  {
		conn = conectar();

		try {
			
			stmt = conn.createStatement();
			stmt.executeUpdate("insert into moto (placa, modelo,marca,AnoFab,cor,categoria) values (?,?,?,?,?,?)");
			
			//stmt.executeUpdate(("insert into  moto values('"  + id
				//	+ "',modelo=" + "'" + modelo + "'," + "marca=" + "'"
					//+ marca + "',cor=" + "'" + cor + "'," + "anoFab=" + "'"
					//+ AnoFab + "',categoria=" + "'" + Categoria + ""
					//+ "'"));
			
			System.out.println("insert into moto values('" + placa + "','"
					+ modelo + "','" + marca + "','" + cor + "','" + AnoFab
					+ "','" + Categoria + "');");
			
			//stmt.executeUpdate("insert into moto values('" + placa + "','"
				//	+ modelo + "','" + marca + "','" + cor + "','" + AnoFab
					//+ "','" + Categoria +"");

			JOptionPane.showMessageDialog(null,
					"Moto Cadastrada!", "Aviso!",
					JOptionPane.INFORMATION_MESSAGE);

		} catch (SQLException e) {
			JOptionPane
					.showMessageDialog(
							null,
							"Error Ao Gravar!",
							"Error!", JOptionPane.INFORMATION_MESSAGE);

		}
	}

	// =======================================================================================

	// ==============================================================================
	public static void carregadados(Registro registro) throws SQLException {

		try {

		

			registro.setID(rsDados.getString("id"));
			registro.setModelo(rsDados.getString("Placa"));
			registro.setModelo(rsDados.getString("modelo"));
			registro.setMarca(rsDados.getString("marca"));
			registro.setCor(rsDados.getString("cor"));
			registro.setAnoFab(rsDados.getString("anoFab"));
			registro.setCategoria(rsDados.getString("categoria"));
		}
	 catch (Exception e) {
	 }
	 }

	// ======================================================================================
	public ResultSet buscar(String ID) throws Exception {

		conectar();
		try {
			stmt = conn.createStatement();
			rsDados = stmt
					.executeQuery("select * from moto where id like '"
							+ ID + "'");

			rsDados.next();
			reg.setID(rsDados.getString("id"));
			reg.setModelo(rsDados.getString("Placa"));
			reg.setModelo(rsDados.getString("modelo"));
			reg.setMarca(rsDados.getString("marca"));
			reg.setCor(rsDados.getString("cor"));
			reg.setAnoFab(rsDados.getString("anoFab"));
			reg.setCategoria(rsDados.getString("categoria"));

		} catch (SQLException e) {

			JOptionPane.showMessageDialog(null,
					" não encontrado, Verefique os Dados Informados!",
					"Error!", JOptionPane.INFORMATION_MESSAGE);

		}

		return busca;

	}

	// ========================================================================================
	public ResultSet buscar2;
	{

		conectar();
		try {
			stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(" select * from moto ");

		} catch (SQLException e) {

			JOptionPane.showMessageDialog(null,
					"não encontrado, Verefique os Dados Informados!",
					"Error!", JOptionPane.INFORMATION_MESSAGE);

		}

	}

	// ========================================================================================

	public void excluir(String ID) throws Exception {

		conectar();
		try {
			stmt = conn.createStatement();
			stmt.executeUpdate("delete from moto where id='" + ID + "'");
			JOptionPane.showMessageDialog(null,
					"excluido com sucesso!", "Aviso!",
					JOptionPane.INFORMATION_MESSAGE);

		} catch (SQLException e) {

			JOptionPane.showMessageDialog(null,
					"Exclusão não pode ser feita.!!!!", "Error!",
					JOptionPane.INFORMATION_MESSAGE);

		}

	}

	public static void carregaBusca1(Registro registro) throws SQLException {

		ArrayList lista = new ArrayList();

		String comando = "select * from moto";

		conectar();
		java.sql.Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery(comando);

		while (rs.next()) {
			Registro registro1 = new Registro();
			registro1.setID(rs.getString("id"));
			registro.setModelo(rs.getString("Placa"));
			registro1.setModelo(rs.getString("modelo"));
			registro1.setMarca(rs.getString("marca"));
			registro1.setCor(rs.getString("cor"));
			registro1.setAnoFab(rs.getString("AnoFab"));
			registro1.setCategoria(rs.getString("Categoria"));

			lista.add(registro1);// adicionando no array

		}
		return;
	}
}



package Tela;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import Dados.Registro;


public class Layout extends javax.swing.JFrame {
	

	public static final long serialVersionUID = 1L;
	public static String[] colunas = {"Placa","Modelo","Marca","Cor","AnoFab",""};
	public static String dados[][] = null;
	
	public static JTable table = null;
	
	public JLabel JTitulo;
	public JLabel JMarca;
	public JLabel jLabel2;
	public JLabel jLabel3;
	public JButton JBPesquisar;
	public JButton JBTodos;
	public JButton JBExcluir;
	public JButton JBNovo;
	public static JScrollPane jScrollPane1;
	public JButton JBAlterar;
	public JLabel jLabel5;
	public JTextField JTID;
	public JLabel jLabel4;
	public JButton JBSalvar;
	public JButton JBCancelar;
	public JTextField JTCategoria;
	public JTextField JTAnoFab;
	public JTextField JTCor;
	public JTextField JTMarca;
	public JTextField JTModelo;
	public JLabel jLabel1;
	public JLabel JModelo;
	Registro reg = new Registro();


	public static void main(String[] args) {
		
		SwingUtilities.invokeLater(new Runnable() {
			
			
			public void run() {
				Layout inst = new Layout();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	
	public Layout() {
		super("");
		initGUI();
	}
	
	
	
	public JTable impritodos (){
		
				
			
		    ArrayList<Registro> lista = null;
			try {
				lista = reg.mostra(); 
			} catch (Exception e) {
				
				e.printStackTrace();
			}
			

			
			dados = new String[lista.size()][6]; 
			
			
			for(int i=0; i<lista.size(); i++){
				
				 dados[i][0]=lista.get(i).getID();          
				 dados[i][1]=lista.get(i).getModelo();      
				 dados[i][2]=lista.get(i).getMarca();       
				 dados[i][3]=lista.get(i).getCor();         
				 dados[i][4]=lista.get(i).getAnoFab();      
				 dados[i][5]=lista.get(i).getCategoria();
				
			}
		
			
			return table = new JTable (dados, colunas);
	}
	

	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				JTitulo = new JLabel();
				getContentPane().add(JTitulo);
				JTitulo.setText("Cadastro de Motos ");
				JTitulo.setBounds(27, 12, 394, 22);
				JTitulo.setFont(new java.awt.Font("Segoe UI",1,24));
			}
			{
				JModelo = new JLabel();
				getContentPane().add(JModelo);
				JModelo.setText("Modelo :");
				JModelo.setBounds(27, 107, 108, 16);
			}
			{
				JMarca = new JLabel();
				getContentPane().add(JMarca);
				JMarca.setText("Marca :");
				JMarca.setBounds(27, 135, 107, 16);
			}
			{
				jLabel1 = new JLabel();
				getContentPane().add(jLabel1);
				jLabel1.setText("Cor :");
				jLabel1.setBounds(27, 168, 107, 16);
			}
			{
				jLabel2 = new JLabel();
				getContentPane().add(jLabel2);
				jLabel2.setText("Ano de Fabricação : ");
				jLabel2.setBounds(27, 201, 133, 16);
			}
			{
				jLabel3 = new JLabel();
				getContentPane().add(jLabel3);
				jLabel3.setText("Categoria : ");
				jLabel3.setBounds(27, 236, 107, 16);
			}
			{
				JTModelo = new JTextField();
				getContentPane().add(JTModelo);
				JTModelo.setBounds(167, 104, 269, 23);
			}
			{
				JTMarca = new JTextField();
				getContentPane().add(JTMarca);
				JTMarca.setBounds(167, 132, 269, 23);
			}
			{
				JTCor = new JTextField();
				getContentPane().add(JTCor);
				JTCor.setBounds(167, 165, 269, 23);
			}
			{
				JTAnoFab = new JTextField();
				getContentPane().add(JTAnoFab);
				JTAnoFab.setBounds(166, 198, 270, 23);
			}
			{
				JTCategoria = new JTextField();
				getContentPane().add(JTCategoria);
				JTCategoria.setBounds(166, 233, 270, 23);
			}
			{
				
				JBCancelar = new JButton();
				getContentPane().add(JBCancelar);
				JBCancelar.setText("Cancelar");
				JBCancelar.setBounds(306, 403, 130, 23);
				JBCancelar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						
						JTID.setText("");
						JTModelo.setText("");	 
						JTMarca.setText("");
						JTCor.setText("");
						JTAnoFab.setText("");
						JTCategoria.setText("");
						JTID.requestFocus();
						
					}
				});
			}
			{
				
				JBSalvar = new JButton();
				getContentPane().add(JBSalvar);
				JBSalvar.setText("Salvar");
				JBSalvar.setBounds(36, 403, 130, 23);
				
				JBSalvar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {

					reg.setID(JTID.getText());
                    reg.setModelo(JTModelo.getText());
					reg.setMarca(JTMarca.getText());
					reg.setCor(JTCor.getText());
					reg.setAnoFab(JTAnoFab.getText());
					reg.setCategoria(JTCategoria.getText());

					
					
					JTID.setText("");	
					JTModelo.setText("");	 
					JTMarca.setText("");
					JTCor.setText("");
					JTAnoFab.setText("");
					JTCategoria.setText("");
					JTID.requestFocus();
										
					
				
						try {
												
							reg.inserir();
							impritodos();
							
					
						} catch (SQLException e) {
							
							e.printStackTrace();
						}
                 
					
					}
				
				});
			}
			{
				JBPesquisar = new JButton();
				getContentPane().add(JBPesquisar);
				JBPesquisar.setText("Buscar");
				JBPesquisar.setBounds(171, 369, 130, 23);
				JBPesquisar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						
						
						reg.setID(JTID.getText());
						
						try {
							reg.buscar();
							JTID.setText(reg.getID());
							JTModelo.setText(reg.getModelo());
							JTMarca.setText(reg.getMarca());
							JTCor.setText(reg.getCor());
							JTAnoFab.setText(reg.getAnoFab());
							JTCategoria.setText(reg.getCategoria());
							JBAlterar.setEnabled(true);
							JBSalvar.setEnabled(false);
							JBExcluir.setEnabled(true);
							
						} catch (SQLException e) {
							
							e.printStackTrace();
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				});
			}
			{
				jLabel4 = new JLabel();
				getContentPane().add(jLabel4);
				jLabel4.setText("");
				jLabel4.setBounds(27, 40, 327, 16);
			}
			{
				jLabel5 = new JLabel();
				getContentPane().add(jLabel5);
				jLabel5.setText("Placa : ");
				jLabel5.setBounds(27, 80, 128, 16);
			}
			{
				JTID = new JTextField();
				getContentPane().add(JTID);
				JTID.setBounds(167, 77, 269, 23);
			}
			{
				JBAlterar = new JButton();
				getContentPane().add(JBAlterar);
				JBAlterar.setText("Alterar");
				JBAlterar.setEnabled(false);
				JBAlterar.setBounds(171, 403, 130, 23);
				JBAlterar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
					    	
							reg.setID(JTID.getText()); 
					    	reg.setModelo(JTModelo.getText());
							reg.setMarca(JTMarca.getText());
							reg.setCor(JTCor.getText());
							reg.setAnoFab(JTAnoFab.getText());
							reg.setCategoria(JTCategoria.getText());
							
							JTID.setText("");
							JTModelo.setText("");	 
							JTMarca.setText("");
							JTCor.setText("");
							JTAnoFab.setText("");
							JTCategoria.setText("");
							JTID.requestFocus();
							
							
							
								try {
														
									reg.alterar();
									impritodos();
								} catch (SQLException e) {
									
									e.printStackTrace();
								} catch (Exception e) {
									e.printStackTrace();
								}
					}
				});
			}
			{
				JBNovo = new JButton();
				getContentPane().add(JBNovo);
				JBNovo.setText("Novo ");
				JBNovo.setBounds(36, 369, 130, 23);
				JBNovo.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						
						JTID.setText("");
						JTModelo.setText("");	 
						JTMarca.setText("");
						JTCor.setText("");
						JTAnoFab.setText("");
						JTCategoria.setText("");
						JTID.requestFocus();
						JBSalvar.setEnabled(true);
						JBAlterar.setEnabled(false);
						JBExcluir.setEnabled(false);
						
					}
				});
			}
			{
				
				JBExcluir = new JButton();
				getContentPane().add(JBExcluir);
				JBExcluir.setText("Excluir");
				JBExcluir.setBounds(306, 369, 130, 23);
				JBExcluir.setEnabled(false);
				JBExcluir.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						
						reg.setID(JTID.getText());
						
						try {
							
							reg.excluir();
							JBExcluir.setEnabled(false);
							JTModelo.setText("");	 
							JTMarca.setText("");
							JTCor.setText("");
							JTAnoFab.setText("");
							JTCategoria.setText("");
							JTID.setText("");
							JTID.requestFocus();
							impritodos();
							
						} catch (SQLException e) {
							
							e.printStackTrace();
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});
			}
			
			{
				JBTodos = new JButton();
				getContentPane().add(JBTodos);
				JBTodos.setText("Buscar Todos");
				JBTodos.setBounds(820, 37, 144, 23);
				JBTodos.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
					
						JTable tabelaRelatorio = new JTable(); 
						tabelaRelatorio = impritodos(); 
						tabelaRelatorio.setBounds(504, 71, 470, 365); 
						tabelaRelatorio.getTableHeader().setReorderingAllowed(false);
						jScrollPane1 = new JScrollPane(tabelaRelatorio); 
					
						jScrollPane1.setBounds(508, 77, 462, 349); 
						getContentPane().add(jScrollPane1); 
				
					}
				});
			}
			{
				
			}

			this.setSize(1024, 484);

		} catch (Exception e) {
		   
			e.printStackTrace();
		}
	}

	

}

3 Respostas

A

caramba, que código!

acho que você deveria estudar mais a teoria:
Encapsulamento
Desenvolvimento em Camadas
MVC
DAO
Acoplamento e Coesão.

para resolver teu problema posta o o trecho do código que está dando o erro e o stacktrace do console.

wbdsjunior

Caramba!

Bem. O problema está no método de inserção:
public class SQL { 
    // ...

    // Aqui você recebe os parâmetros
    public void inserir(String placa, String modelo, String marca, String cor,  
            String AnoFab, String Categoria)  {
        conn = conectar();  
  
        try {  
              
            stmt = conn.createStatement();
            // E  que usou Statement em vez de PreparedStatement, aqui você deveria concatenar os parâmetros à String em vez de colocar "?"
            stmt.executeUpdate("insert into moto (placa, modelo,marca,AnoFab,cor,categoria) values (?,?,?,?,?,?)"); 

            // Quase isso
            //stmt.executeUpdate(("insert into  moto values('"  + id  
                //  + "',modelo=" + "'" + modelo + "'," + "marca=" + "'"  
                    //+ marca + "',cor=" + "'" + cor + "'," + "anoFab=" + "'"  
                    //+ AnoFab + "',categoria=" + "'" + Categoria + ""  
                    //+ "'"));  

            // Quase isso
            //stmt.executeUpdate("insert into moto values('" + placa + "','"  
                //  + modelo + "','" + marca + "','" + cor + "','" + AnoFab  
                    //+ "','" + Categoria +"");  

            // Se id for do tipo auto-incremento, talvez assim funcione. Disse talvez porque não tenho como testar
            // stmt.executeUpdate("insert into moto (placa, modelo,marca,AnoFab,cor,categoria) values ('" + placa + "','" + modelo + "','" + marca + "','" + cor + "','" + AnoFab + "','" + categoria + "'");

            JOptionPane.showMessageDialog(null,  
                    "Moto Cadastrada!", "Aviso!",  
                    JOptionPane.INFORMATION_MESSAGE);  
  
        } catch (SQLException e) {
            JOptionPane  
                    .showMessageDialog(  
                            null,  
                            "Error Ao Gravar!",  
                            "Error!", JOptionPane.INFORMATION_MESSAGE);  
            // Nunca esconda a stackTrace. Se não quer exibi- ao usuário, você pode usar um Logger.
            e.printStackTrace();  
        }  
    }
    // ...
}
Você recebe os parâmetros mas não passa ele para a execução do Steatment.

Para entender como a JDBC funciona e como usá-la de uma forma melhor, leia o Capitulo 2: Bancos de dados e JDBC da Apostila do curso FJ-21: Java para Desenvolvimento Web da Caelum

A

não prestei atenção nos detalhes do código.
deu dor de cabeça.

percebi que os dados são transportados pela aplicação, não há objetos de negócio!

Este é o desenvolvimento: de trás para frente! primeiro você desenvolve, depois aprende!

adicione na lista de estudos:
OO
JAVA API
JDBC

Criado 28 de junho de 2013
Ultima resposta 29 de jun. de 2013
Respostas 3
Participantes 3