Erro ao executar o insert

19 respostas
M

Não estou conseguindo executa meu insert, so da erro não sei mais o que fazer alguem pode me ajuda?

o código é esse

btninserir.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent evt) {

try {

Class.forName(com.mysql.jdbc.Driver);

Connection cn;

cn = DriverManager.getConnection( jdbc:mysql://localhost/locadora”, “root”, “123” );

st = cn.createStatement();
st.executeUpdate("INSERT INTO funcionario VALUES("+txtreg_func.getText()+","+txtnome.getText()+","+txtrua.getText()+","+tel.getText()+","+cpf.getText()+","+txtfuncao.getText()+","+txtlogin.getText()+","+txtsenha.getPassword()+","+cep.getText()+","+txtcidade.getText()+","+txtbairro.getText()+")");   
	           
	           txtnome.requestFocus();
	              
	           }catch (ClassNotFoundException e){   
	               JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());   
	                   e.printStackTrace();   
	           }catch (SQLException e){   
	                   e.printStackTrace();   
	       }   
	   } 
	});

19 Respostas

Fernandojdk

Por favor, coloque o código entre as tags [CODE] do seu editor no fórum para melhor visualização…

Poste o erro que ta dando…

wamarra
mehdinho:
Não estou conseguindo executa meu insert, so da erro não sei mais o que fazer alguem pode me ajuda?

o código é esse

btninserir.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt) { try { Class.forName("com.mysql.jdbc.Driver"); Connection cn; cn = DriverManager.getConnection( "jdbc:mysql://localhost/locadora", "root", "123" ); st = cn.createStatement(); st.executeUpdate("INSERT INTO funcionario VALUES("+txtreg_func.getText()+","+txtnome.getText()+","+txtrua.getText()+","+tel.getText()+","+cpf.getText()+","+txtfuncao.getText()+","+txtlogin.getText()+","+txtsenha.getPassword()+","+cep.getText()+","+txtcidade.getText()+","+txtbairro.getText()+")"); txtnome.requestFocus(); }catch (ClassNotFoundException e){ JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage()); e.printStackTrace(); }catch (SQLException e){ e.printStackTrace(); } } });
Faltou colocar a porta do teu banco. Tente o seguinte:
btninserir.addActionListener(new ActionListener(){ 
       public void actionPerformed(ActionEvent evt) { 
              try { 
                    Class.forName("com.mysql.jdbc.Driver"); 
                    Connection cn; 
                    cn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/locadora", "root", "123" ); 
                    st = cn.createStatement(); 

                    st.executeUpdate("INSERT INTO funcionario VALUES("+txtreg_func.getText()+","+txtnome.getText()+","+txtrua.getText()+","+tel.getText()+","+cpf.getText()+","+txtfuncao.getText()+","+txtlogin.getText()+","+txtsenha.getPassword()+","+cep.getText()+","+txtcidade.getText()+","+txtbairro.getText()+")"); 

                    txtnome.requestFocus(); 

             }catch (ClassNotFoundException e){ 
                       JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage()); 
                              e.printStackTrace(); 
             }catch (SQLException e){ 
                              e.printStackTrace(); 
             } 
      } 
});
T+
M
[ btninserir.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent evt) {

try {

Class.forName(com.mysql.jdbc.Driver);

Connection cn;

cn = DriverManager.getConnection( jdbc:mysql://localhost/locadora”, “root”, “123” );

st = cn.createStatement();
st.executeUpdate("INSERT INTO funcionario VALUES("+txtreg_func.getText()+","+txtnome.getText()+","+txtrua.getText()+","+tel.getText()+","+cpf.getText()+","+txtfuncao.getText()+","+txtlogin.getText()+","+txtsenha.getPassword()+","+cep.getText()+","+txtcidade.getText()+","+txtbairro.getText()+")");   
	           
	           txtnome.requestFocus();
	              
	           }catch (ClassNotFoundException e){   
	               JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());   
	                   e.printStackTrace();   
	           }catch (SQLException e){   
	                   e.printStackTrace();   
	       }   
	   } 
	});]

Os erros são esses, estou desconfiado que é o banco de dados

[com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near qqqqqqqq,222222,[telefone removido],[telefone removido],22222222,arquimedes,[C@cdfc9c,22222222,22 at line 1

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:406)

at com.mysql.jdbc.Util.getInstance(Util.java:381)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1031)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485)

at funcionario$2.actionPerformed(funcionario.java:65)

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.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)]
caiocout

mas vc não disse qual o erro…

uma dica… vc está abrindo uma conexão com o banco toda vez que clica no botão,
seria melhor colocar o getConnection onde ele fosse chamado somente uma vez
vc tbm não fecha a connection.

Fernandojdk
btninserir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection cn;
cn = DriverManager.getConnection( "jdbc:mysql://localhost/locadora", "root", "123" );
st = cn.createStatement();

st.executeUpdate("INSERT INTO funcionario VALUES(\""+txtreg_func.getText()+"\",\""+txtnome.getText()+"\",\""+txtrua.getText()+"\",\""+tel.getText()+"\",\""+cpf.getText()+"\",\""+txtfuncao.getText()+"\",\""+txtlogin.getText()+"\",\""+txtsenha.getPassword()+"\",\""+cep.getText()+"\",\""+txtcidade.getText()+"\",\""+txtbairro.getText()+"\")");

txtnome.requestFocus();
cn.close();
}catch (ClassNotFoundException e){
JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());
e.printStackTrace();
}catch (SQLException e){
e.printStackTrace();
}
}
});

Concordo tb... seria melhor vc criar um método getConnetion() para não abrir uma conexão toda vez que executar essa ação...

caiocout

erro de syntaxe do sql…
todos os campos da sua table são varchar??

coloque os valores entre aspas simples

st.executeUpdate("INSERT INTO funcionario VALUES( '"+txtreg_func.getText()+"','"+txtnome.getText()+"','"+txtrua.getText()+'","'+tel.getText()+'","'+cpf.getText()+'","'+txtfuncao.getText()+'",'"+txtlogin.getText()+"','"+txtsenha.getPassword()+'",'"+cep.getText()+"','"+txtcidade.getText()+"','"+txtbairro.getText()+"')");
M

Agora estou fechando o connection e coloquei a porta do banco pra eu acessar mais continua os mesos erros

[
btninserir.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent evt) {                               
		       try {   
		           Class.forName("com.mysql.jdbc.Driver");   
		           Connection cn;   
		           cn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/locadora", "root", "123" );   
		           st = cn.createStatement();    
		  
		           st.executeUpdate("INSERT INTO funcionario VALUES("+txtreg_func.getText()+","+txtnome.getText()+","+txtrua.getText()+","+tel.getText()+","+cpf.getText()+","+txtfuncao.getText()+","+txtlogin.getText()+","+txtsenha.getPassword()+","+cep.getText()+","+txtcidade.getText()+","+txtbairro.getText()+")");   
		           
		           txtnome.requestFocus();
		           
		           st.close();
		           cn.close();
		              
		           }catch (ClassNotFoundException e){   
		               JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());   
		                   e.printStackTrace();   
		           }catch (SQLException e){   
		                   e.printStackTrace();   
		       }   
		   } 
		});
]
caiocout

coloca as aspas nos valores =]

M

Todos os campos são VARCHAR, coloquei as apas mais mesmo assim continua os mesmos erros

btninserir.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent evt) {                               
		       try {   
		           Class.forName("com.mysql.jdbc.Driver");   
		           Connection cn;   
		           cn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/locadora", "root", "123" );   
		           st = cn.createStatement();    
		  
		           st.executeUpdate("INSERT INTO funcionario VALUES('"+txtreg_func.getText()+"','"+txtnome.getText()+"','"+txtrua.getText()+"','"+tel.getText()+"','"+cpf.getText()+"','"+txtfuncao.getText()+"','"+txtlogin.getText()+"','"+txtsenha.getPassword()+"','"+cep.getText()+"','"+txtcidade.getText()+"','"+txtbairro.getText()+"')");   
		           
		           txtnome.requestFocus();
		           
		           st.close();
		           cn.close();
		              
		           }catch (ClassNotFoundException e){   
		               JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());   
		                   e.printStackTrace();   
		           }catch (SQLException e){   
		                   e.printStackTrace();   
		       }   
		   } 
		});
Marky.Vasconcelos

A sintaxe correta não seira algo assim?

st.executeUpdate("INSERT (func,nome,tel,cpf,funcao,login,senha,cep,cidade,bairro) INTO funcionario VALUES( '"+txtreg_func.getText()+"','"+txtnome.getText()+"','"+txtrua.getText()+'","'+tel.getText()+'","'+cpf.getText()+'","'+txtfuncao.getText()+'",'"+txtlogin.getText()+"','"+txtsenha.getPassword()+'",'"+cep.getText()+"','"+txtcidade.getText()+"','"+txtbairro.getText()+"')");

?
Outra coisa não faça seu insert assim crie um PreparedStatement primeiro
Exemplo de como ficaria oque fiz antes com PreparedStatement

PreparedStatement stat = connection.prepareStatement(("INSERT (func,nome,tel,cpf,funcao,login,senha,cep,cidade,bairro) INTO funcionario VALUES( ?,?,?,?,?,?,?,?,?,?,?)");
stat.setString(0,txtreg_func.getText());
stat.setString(1,txtnome.getText());
stat.setString(2,txtrua.getText());
stat.setString(3,tel.getText());
stat.setString(4,cpf.getText());
stat.setString(5,txtfuncao.getText());
stat.setString(6,txtlogin.getText());
stat.setString(7,txtsenha.getPassword());
stat.setString(8,cep.getText());
stat.setString(9,txtcidade.getText());
stat.setString(10,txtbairro.getText());

stat.executeUpdate();

PS: Eu só chutei o nome dos campos da sua tabela, mas a sintaxe é essa.

wamarra

Só um dica :wink:
Tente utilizar o PreparedStatement ao invés de Statement.
Fica mais fácil entendimento do código e vc não precisa se preocupar com as aspas, que ele coloca para vc.
Abraço

caiocout

hehehe fui buscar na api essa:

txtsenha.getPassword() retorna um array de char tá dando pau ai…

troca por new String( txtsenha.getPassword() )

Marky.Vasconcelos

Ou então Sting.valueOf(txtsenha.getPassword());

M

Não vai, mudei o campo da senha mais nem assim

M

pelo menos agora mudou o erro, olha o erro que esta retornando

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column login at row 1

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3374)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485)

at funcionario$2.actionPerformed(funcionario.java:65)

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.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)
M

Pessoal agora foi, , muito obrigado pela ajuda, olha como ficou o código,

btninserir.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent evt) {                               
		       try {   
		           Class.forName("com.mysql.jdbc.Driver");   
		           Connection cn;   
		           cn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/locadora", "root", "123" );   
		           st = cn.createStatement();    
		  
		           st.executeUpdate("INSERT INTO funcionario VALUES('"+txtreg_func.getText()+"','"+txtnome.getText()+"','"+txtrua.getText()+"','"+cpf.getText()+"','"+txtfuncao.getText()+"','"+txtlogin.getText()+"','"+txtsenha.getText()+"','"+cep.getText()+"','"+txtcidade.getText()+"','"+txtbairro.getText()+"')");   
		           
		           txtnome.requestFocus();
		           
		           st.close();
		           cn.close();
		              
		           }catch (ClassNotFoundException e){   
		               JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());   
		                   e.printStackTrace();   
		           }catch (SQLException e){   
		                   e.printStackTrace();   
		       }   
		   } 
		});
Marky.Vasconcelos

Tentou fazer o insert como eu falei?

Quando eu começei a ter esse problema eu desesti do JDBC (Essa parte para ficar escrevendo a SQL)
E parti pro Hibernate com Annotations, e realmente é uma ótima opção

M

Como eu faço pra criar o getConnection que vocês dissera?

M

Como eu faço pra criar o getConnection que vocês dissera?

Criado 22 de novembro de 2007
Ultima resposta 22 de nov. de 2007
Respostas 19
Participantes 5