Com.mysql.jdbc.MysqlDataTruncation:

2 respostas
R

Olá, boa tarde.

Já estou a dois dias tentando fazer com que minha aplicação grave os dados em uma tabela JTable.

Toda vez que eu mando executar a insersão dos dados me retorna o seguinte erro.

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column 'codigo' at row 1
 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868)
 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
 	at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
 	at com.mysql.jdbc.Connection.execSQL(Connection.java:3099)
 	at com.mysql.jdbc.Statement.execute(Statement.java:695)
 	at hfuniformes.Vendas.jBTadicionarActionPerforme(Vendas.java:598)
 	at hfuniformes.Vendas.access$5(Vendas.java:580)
 	at hfuniformes.Vendas$6.actionPerformed(Vendas.java:317)
 	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
 	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
 	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
 	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
 	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
 	at java.awt.Component.processMouseEvent(Component.java:5501)
 	at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
 	at java.awt.Component.processEvent(Component.java:5266)
 	at java.awt.Container.processEvent(Container.java:1966)
 	at java.awt.Component.dispatchEventImpl(Component.java:3968)
 	at java.awt.Container.dispatchEventImpl(Container.java:2024)
 	at java.awt.Component.dispatchEvent(Component.java:3803)
 	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
 	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
 	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
 	at java.awt.Container.dispatchEventImpl(Container.java:2010)
 	at java.awt.Window.dispatchEventImpl(Window.java:1778)
 	at java.awt.Component.dispatchEvent(Component.java:3803)
 	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
 	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
 	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
 	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Segue o código fonte da aplicação (uma parte).

private void jBTadicionarActionPerforme(java.awt.event.ActionEvent evt) throws SQLException {//GEN-FIRST:event_jInclFornecedorActionPerformed

    	try{
	         String incluirtabela;
	         String classpath = "mysql-connector-java-5.0.4-bin.jar";
	         String driverName = "com.mysql.jdbc.Driver";
			 Class.forName(driverName);
	         String url = "jdbc:mysql://localhost:3306/hiroko";
	         String username = "administrador";
	         String password = "123456";
	         Connection con= DriverManager.getConnection(url, username, password);
	         int row = jTable1.getSelectedRow();
	         incluirtabela = ("insert into listavendas ( quantidade, produto, descricao, valorunitario, valortotal, codigo) values ( '"+ modelo.getValueAt(row,0) +"', '"+ modelo.getValueAt(row,1) +"','"+ modelo.getValueAt(row,2) +"','"+ modelo.getValueAt(row,3) +"','"+ modelo.getValueAt(row,4) +"','"+ modelo.getValueAt(row,5) +"')");
	         PreparedStatement stmt = (PreparedStatement) con.prepareStatement(incluirtabela);
	         modelo.addRow(new Object[]{null, null, null, null, null, null});

	         boolean rs = stmt.execute(incluirtabela);

	         }
	     	 catch (ClassNotFoundException e) {
	     		 e.printStackTrace();
	     		 JOptionPane.showMessageDialog(this,"Passou pelo ClassNotFoundException");
	 		 }
	     	//modelo.addRow(new Object[]{null, null, null, null, null, null});
	     }

e por fim o código do SQL

CREATE TABLE  `hiroko`.`listavendas` (
   `quantidade` double default NULL,
   `produto` varchar(25) default NULL,
   `descricao` varchar(100) default NULL,
   `valorunitario` double default NULL,
   `valortotal` double default NULL,
   `codigo` int(10) unsigned default NULL,
   `id` int(10) unsigned default NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Desde já agradeço a ajuda.

2 Respostas

D

Oi colega…pela exception

Out of range value adjusted for column 'codigo' at row 1

o valor q. vc está passando para o campo código é maior do que os limites desse campo…(tow tirando isso pela exception)…

dá uma verificada…se não for isso…posta aqui.

t+

R

Diana, deixa eu te explicar porque.

O registro só está usando um caracter e pelo código fonte do SQL eu poderia colocar até onze caracteres.

Mas mesmo assim, te agradeço pela ajuda.

Criado 20 de julho de 2007
Ultima resposta 20 de jul. de 2007
Respostas 2
Participantes 2