2014-02-18 69 views
0

我做了一个jtable,我手动给出值,并通过单击保存(jButton2)按钮将数据保存在sql中。现在的问题是,当我保持jtable空白并保存它..显示数据保存,但没有任何数据保存在数据库中。数据不通过jtable保存在数据库中(编辑)

当我把数据放入jtable并试图保存它给出的异常。

柱(I,5)通过乘以列获得值(i,3)和列(I,4)

jButton2ActionPerformed(保存按钮)的方法如下:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
// TODO add your handling code here: 
    try { 
String sql="insert into `sampleDB`.`Item_detail` (P_name,Manuf_name,Model_no,Purchase_price,Available,total Price,Sell_price,Quality,Color,Description,profit,Cost_price,idDealerItem) values(?,?,?,?,?,?,?,?,?,?,?,?,?)"; 

     pst=con.prepareStatement(sql); 

      int last=jTable1.getRowCount(); 
      for(int i=0;i<last;i++){ 
       if(((String) jTable1.getValueAt(i,0))!=null){ 
      String column1= (String) jTable1.getValueAt(i,0); 
      String column2= (String) jTable1.getValueAt(i,1); 
      String column3= (String) jTable1.getValueAt(i,2); 
      String column4= (String) jTable1.getValueAt(i,3); 
      String column5= (String) jTable1.getValueAt(i,4);     
      String column6= (String) jTable1.getValueAt(i,5); 
      String column7= (String) jTable1.getValueAt(i,6); 

      pst.setString(1,column1); 
      pst.setString(2,column2); 
      pst.setString(3,column3); 
      pst.setString(4,column4); 
      pst.setString(5,column5); 
      pst.setString(6,column6); 
      pst.setString(7,null); 
     pst.setString(8,column7); 
     pst.setString(9,null); 
     pst.setString(10,null); 
     pst.setString(11,null); 
     pst.setString(12,null); 
     pst.setString(13,null); 



      pst.execute(); 
      } 
     } 

      JOptionPane.showMessageDialog(null, "data saved"); 

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

方法其中列相乘得到是:遵循

private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {         
// TODO add your handling code here: 
    if(evt.getKeyCode()==KeyEvent.VK_TAB){ 
     int r = jTable1.getRowCount(); 
    for (int i = 0; i < r; i++){ 
    if(jTable1.getValueAt(i,3)!=null && jTable1.getValueAt(i,4)!=null){ 
     int a=Integer.parseInt(jTable1.getValueAt(i,3).toString()); 
        int b=Integer.parseInt(jTable1.getValueAt(i,4).toString()); 
        int d= a*b; 
        jTable1.setValueAt(d,i,5); 
    } 
    } 
    } 
} 

新的错误是:

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 'Price,Sell_price,Quality,Color,Description,profit,Cost_price,idDealerItem) value' at line 1 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
at com.mysql.jdbc.Util.getInstance(Util.java:384) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568) 
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113) 
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364) 
at Extra.jButton2ActionPerformed(Extra.java:331) 
at Extra.access$300(Extra.java:14) 
at Extra$4.actionPerformed(Extra.java:121) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.Component.processMouseEvent(Component.java:6505) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3311) 
at java.awt.Component.processEvent(Component.java:6270) 
at java.awt.Container.processEvent(Container.java:2229) 
at java.awt.Component.dispatchEventImpl(Component.java:4861) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Component.dispatchEvent(Component.java:4687) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
at java.awt.Container.dispatchEventImpl(Container.java:2273) 
at java.awt.Window.dispatchEventImpl(Window.java:2719) 
at java.awt.Component.dispatchEvent(Component.java:4687) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) 
at java.awt.EventQueue.access$200(EventQueue.java:103) 
at java.awt.EventQueue$3.run(EventQueue.java:694) 
at java.awt.EventQueue$3.run(EventQueue.java:692) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
at java.awt.EventQueue$4.run(EventQueue.java:708) 
at java.awt.EventQueue$4.run(EventQueue.java:706) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 

请帮助.. 在此先感谢..

回答

2

你有ClassCastException因为你JTableInteger值的这不能像下一个String column1= (String) jTable1.getValueAt(i,0);一样投射到String。修改成:

String column1= jTable1.getValueAt(i,0) == null ? "" : jTable1.getValueAt(i,0).toString(); 
+0

其working..now我试图将数据在另一个表保存在再次创造problem..Please检查我已编辑的代码和错误的database..its .. – AM26

+0

问题是解决.. – AM26

+0

这很好...) – alex2410

1

你不能投IntegerString,但你可以写

Integer integer = new Integer(4); 
String string = integer.toString(); // "4" 
相关问题