Fórum JTable com Banco de Dados #575060
17/02/2017
0
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
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
Curtir tópico
+ 0Posts
17/02/2017
Jones Granatyr
Gostei + 0
17/02/2017
Carla Silva
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
20/02/2017
Estevão Dias
Você está usando JDBC, certo? Tenta chamar a função
con.setAutoCommit(false);
na sua conexão.
Gostei + 0
20/02/2017
Carla Silva
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)