JTable com Banco de Dados

Java

17/02/2017

Olá pessoal,tudo Bem?

Estou tendo dificuldades de salvar conteúdo no banco de dados, toda vez que eu clico, no botão "salvar", não salva, já fiz de tudo e nada,
se eu comento a variável
stmt.execute()
a tela aparece, mas antes que eu tente gravar algo no banco surgem vários erros, quando comento esta variável citada e tento gravar algum dado, simplesmente não grava, já cheguei até mudar o código mas não resolve nada, criei ao todo 12 classes, não sei se vai caber todos os códigos, mas vamos lá, segue os códigos:

package src.com.mbalem.app;
import src.com.mbalem.app.dao.DBConnection;
import  src.com.mbalem.app.form.LivroForm;

public class Main{
   public static void main(String[] args){
      DBConnection.createTable();
	  new LivroForm();
   }
}

package src.com.mbalem.app.form;
import  src.com.mbalem.app.entity.Livro;
import  src.com.mbalem.app.controller.LivroController;
import 	src.com.mbalem.app.table.LivroTableModel;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import net.miginfocom.swing.MigLayout;

public class LivroForm extends JFrame{
   
   private JLabel lbEditora,lbTitulo,lbIsbn;
   private JTextField txtEditora,txtTitulo,txtIsbn;
   private JPanel panelAdd,panelTable,panelButtons;
   private JButton btnNew,btnSave,btnUpdate,btnRemove,btnCancel;
   private JTable table;
   private JScrollPane scrollPane;
   
   private List<Livro> livroList;
   private Long idLivro;
   
   public LivroForm() throws HeadlessException{
      super("Cadastro de Livros");
      setContentPane(new JPanel());
      setLayout(null);
      setResizable(false);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      panelAdd = new JPanel(new MigLayout());
      panelAdd.setBorder(BorderFactory.createTitledBorder("Adicionar Livros"));
      panelAdd.setBounds(5,0,480,100);
      
      lbEditora = new JLabel("Editora");
      lbTitulo = new JLabel("Titulo");
      lbIsbn = new JLabel("ISBN");
      
      txtEditora = new JTextField(50);
      txtTitulo = new JTextField(50);
      txtIsbn = new JTextField(15);
      
      panelAdd.add(lbEditora);
      panelAdd.add(txtEditora, "span,growx");
      
      panelAdd.add(lbTitulo);
      panelAdd.add(txtTitulo, "span,growx");//o span irá expandir o campo e o growx pula a linha
      
      panelAdd.add(lbIsbn);
      panelAdd.add(txtIsbn, "wrap para");
      
      panelButtons = new JPanel(new MigLayout());
      panelButtons.setBorder(BorderFactory.createEtchedBorder());
      //posição x, y, largura,altura
      panelButtons.setBounds(5,105,480,40);
      
      ClassLoader loader = getClass().getClassLoader();
      btnNew = new JButton(new ImageIcon(loader.getResource("img/new.png")));
      btnSave = new JButton(new ImageIcon(loader.getResource("img/save.png")));
      btnUpdate = new JButton(new ImageIcon(loader.getResource("img/edit.png")));
      btnRemove = new JButton(new ImageIcon(loader.getResource("img/trash.png")));
      btnCancel = new JButton(new ImageIcon(loader.getResource("img/cancel.png")));
      
      panelButtons.add(btnNew, "gapleft 90");//posição do botão: alinha a esquerda com espaço de 90
      panelButtons.add(btnCancel);
      panelButtons.add(btnSave, "gap unrelated");//posição do botão: alinhados a direita horizontalmente
      panelButtons.add(btnUpdate, "gap unrelated");//posição do botão: alinhados a direita horizontalmente
      panelButtons.add(btnRemove);
      
      panelTable = new JPanel(new MigLayout());
      panelTable.setBorder(BorderFactory.createTitledBorder("Lista de Livros"));
      panelTable.setBounds(5, 150, 480, 240);
      
      table = new JTable();
      
      scrollPane = new JScrollPane(table);
      
      panelTable.add(scrollPane);
      
      refreshTable();
      
      add(panelAdd);
      add(panelButtons);
      add(panelTable);
      //tamanho minimo da tela
      setMinimumSize(new Dimension(500,420));
      setVisible(true);
      
      btnSave.addActionListener(new ActionListener(){
    	  public void actionPerformed(ActionEvent e){
    		  onSaveLivro();
    	  }
      });
      
   }
   
   private void onSaveLivro(){
	   Livro livro = new Livro();
	   
	   if(txtEditora.getText().length() > 0 && txtTitulo.getText().length() > 0 && txtIsbn.getText().length() > 0){
		   livro.setEditora(txtEditora.getText());
		   livro.setTitulo(txtTitulo.getText());
		   livro.setIsbn(txtIsbn.getText());
	   }else{
		   JOptionPane.showMessageDialog(this, "Todos os campos são obrigatórios!");
		   //return;//saindo do método
	   }
	   
	   int result;
	   if(idLivro == null){
		   result = new LivroController().addLivro(livro);
	   }else{
		   livro.setId(idLivro);
		   result = new LivroController().alterarLivro(livro);
		   idLivro = null;
	   }
	   
	   if(result == 1){
		   JOptionPane.showMessageDialog(this, "Valor inserido com sucesso!");
		   refreshTable();
	   }else{
		   JOptionPane.showMessageDialog(this, "Tente Novamente!");
	   }
   }
   
   private void refreshTable(){
	   livroList = new LivroController().findLivros();
	   if(livroList != null){
		   table.setModel(new LivroTableModel(livroList));
	   }
   }
}



Não vou conseguir postar todos os códigos, pois não há espaço, por favor me ajudem
Carla Silva

Carla Silva

Curtidas 0

Respostas

Jones Granatyr

Jones Granatyr

17/02/2017

Opa! Seria interessante você postar a mensagem de erro que está acontecendo
GOSTEI 0
Carla Silva

Carla Silva

17/02/2017

Este é o erro que aparece

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Can't call rollback when autocommit=true
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4586)
at src.com.mbalem.app.dao.LivroDAO.save(LivroDAO.java:31)
at src.com.mbalem.app.facade.LivroFacade.save(LivroFacade.java:17)
at src.com.mbalem.app.controller.LivroController.addLivro(LivroController.java:16)
at src.com.mbalem.app.form.LivroForm.onSaveLivro(LivroForm.java:112)
at src.com.mbalem.app.form.LivroForm.access$0(LivroForm.java:98)
at src.com.mbalem.app.form.LivroForm$1.actionPerformed(LivroForm.java:92)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.sql.SQLException: Field 'ID' doesn't have a default value
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
at src.com.mbalem.app.dao.LivroDAO.save(LivroDAO.java:27)
at src.com.mbalem.app.facade.LivroFacade.save(LivroFacade.java:17)
at src.com.mbalem.app.controller.LivroController.addLivro(LivroController.java:16)
at src.com.mbalem.app.form.LivroForm.onSaveLivro(LivroForm.java:112)
at src.com.mbalem.app.form.LivroForm.access$0(LivroForm.java:98)
at src.com.mbalem.app.form.LivroForm$1.actionPerformed(LivroForm.java:92)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

GOSTEI 0
Estevão Dias

Estevão Dias

17/02/2017

Oi Carla,

Você está usando JDBC, certo? Tenta chamar a função

con.setAutoCommit(false);


na sua conexão.
GOSTEI 0
Carla Silva

Carla Silva

17/02/2017

Não deu certo, os erros persistem, quer que eu poste o código da conexão com o banco?
GOSTEI 0
POSTAR