2017-02-20 6 views
-1

Javaアプリケーションでエラーが発生しています。間違ったコードがどこにあるのかわかりません。Javaアプリケーションでエラーが発生しました

私のエラーは、次のとおりです。私の間違ったコードは多分、SQLクエリである

import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.GridLayout; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 

import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JTextField; 


public class MyFrame extends JFrame{ 

    Connection conn = null; 
    Connection conn1 = null; 
    PreparedStatement state = null; 
    PreparedStatement state1 = null; 
    ResultSet result = null; 
    ResultSet result1 = null; 
    MyModel myModel = null; 
    MyModel myModel1 = null; 

    JPanel topPanel = new JPanel(); 
    JPanel midPanel = new JPanel(); 
    JPanel downPanel = new JPanel(); 

    JPanel midPanelUp = new JPanel(); 
    JPanel midPanelDown = new JPanel(); 

    JLabel modelLabel = new JLabel("Model: "); 
    JLabel yearLabel = new JLabel("Year: "); 
    JLabel engineLabel = new JLabel("Engine: "); 
    JLabel crashedLabel = new JLabel("Is crashed: "); 
    JLabel regNumLabel = new JLabel("Reg Number: "); 

    JTextField modelField = new JTextField(); 
    JTextField yearField = new JTextField(); 
    JTextField engineField = new JTextField(); 
    JTextField regNumField = new JTextField(); 
    JTextField searchText = new JTextField(10); 

    String[] content = {"No", "Yes"}; 
    JComboBox<String> crashedCombo = new JComboBox<String>(content); 
    String[] searchContent = {"Model", "Year","Mix"}; 
    JComboBox<String> searchCombo = new JComboBox<String>(searchContent); 

    JButton addButton = new JButton("Add"); 
    JButton removeButton = new JButton("Remove"); 
    JButton updateButton = new JButton("Update"); 
    JButton searchButton = new JButton("Search"); 

    JTable table = new JTable(); 
    JScrollPane scroller = new JScrollPane(table); 

    public MyFrame(){ 

     this.setVisible(true); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setSize(400, 600); 
     this.setLocation(700, 400); 
     this.setLayout(new GridLayout(3,1)); 

     this.add(topPanel); 
     this.add(midPanel); 
     this.add(downPanel); 

     //topPanel 
     topPanel.setLayout(new GridLayout(5, 2)); 
     topPanel.add(modelLabel); 
     topPanel.add(modelField); 
     topPanel.add(yearLabel); 
     topPanel.add(yearField); 
     topPanel.add(engineLabel); 
     topPanel.add(engineField); 
     topPanel.add(regNumLabel); 
     topPanel.add(regNumField); 
     topPanel.add(crashedLabel); 
     topPanel.add(crashedCombo); 
     //end topPanel 

     //midPanel 
     midPanel.setLayout(new GridLayout(2, 1)); 
     midPanel.add(midPanelUp); 
     midPanel.add(midPanelDown); 

     midPanelUp.add(removeButton); 
     removeButton.addActionListener(new RemoveAction()); 
     midPanelUp.add(updateButton); 
     updateButton.addActionListener(new UpdateAction()); 
     midPanelUp.add(addButton); 
     addButton.addActionListener(new AddAction()); 
     midPanelDown.add(searchButton); 
     midPanelDown.add(searchCombo); 
     midPanelDown.add(searchText); 
     searchButton.addActionListener(new SearchAction()); 
     //end midPanel 

     //downPanel 
     scroller.setPreferredSize(new Dimension(350, 150)); 
     downPanel.add(scroller); 
     getAllFromDB(); 

     //end downPanel 

    } 

    public class SearchAction implements ActionListener { 

     @Override 
     public void actionPerformed(ActionEvent e) { 

      String model = null; 
      int year = 1908; 
      String critiria = "model"; 

      switch(searchCombo.getSelectedIndex()){ 
      case 0: model = searchText.getText(); 
       break; 

      case 1: year = Integer.parseInt(searchText.getText()); 
       critiria = "year"; 
       break; 

      case 2: model = modelField.getText(); 
        year = Integer.parseInt(yearField.getText()); 
      break; 
      } 

      conn = UtilDB.getConnected(); 
      conn1 = UtilDB.getConnected(); 
      String sql = "select id, engine, regnum, crashed " + "from cars " + "where " + critiria + "=?"; 
      String sqlMix = "select id, model, engine, regnum, crashed " + "from cars " + "where model like ? AND year >= ?"; 
      try { 
       state1 = conn1.prepareStatement(sqlMix); 
      } catch (SQLException e2) { 
       // TODO Auto-generated catch block 
       e2.printStackTrace(); 
      } 
      if (searchCombo.getSelectedIndex() == 2){ 
       try { 

        state1.setString(1, model + "%"); 
        state1.setInt(2, year); 
        result1 = state1.executeQuery(); 
        myModel1 = new MyModel(result1); 
        table.setModel(myModel1); 
       } catch (SQLException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } catch (Exception e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

      } 
      try { 
       state = conn.prepareStatement(sql); 
       if (searchCombo.getSelectedIndex() == 0){ 

        state.setString(1, model); 
       } 
       else{ 
        state.setInt(1, year); 
       } 

       result = state.executeQuery(); 
       myModel = new MyModel(result); 
       table.setModel(myModel); 
      } catch (SQLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (Exception e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 

     } 

    } 

    public class UpdateAction implements ActionListener { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
      String model = modelField.getText(); 
      String regNum = regNumField.getText(); 
      conn = UtilDB.getConnected(); 
      String sql = "update cars set model = ? where regnum = ?"; 
      try { 
       state = conn.prepareStatement(sql); 
       state.setString(1, model); 
       state.setString(2, regNum); 
       state.execute(); 
      } catch (SQLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } finally { 
       try { 
        conn.close(); 
       } catch (SQLException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 
      } 
      getAllFromDB(); 
     } 

    } 

    public class RemoveAction implements ActionListener { 

     @Override 
     public void actionPerformed(ActionEvent e) { 

      String regNum = regNumField.getText(); 
      clearFields(); 
      conn = UtilDB.getConnected(); 
      String sql = "delete from cars where regnum = ?"; 
      try { 
       state = conn.prepareStatement(sql); 
       state.setString(1, regNum); 
       state.execute(); 
      } catch (SQLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      }finally{ 
       try { 
        conn.close(); 
       } catch (SQLException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 
      } 
      getAllFromDB(); 
     } 

    } 

    public class AddAction implements ActionListener { 

     @Override 
     public void actionPerformed(ActionEvent e) { 

      String model = modelField.getText(); 
      int year = Integer.parseInt(yearField.getText()); 
      float engine = Float.parseFloat(engineField.getText()); 
      String regNum = regNumField.getText(); 
      boolean isCrashed = false; 

      if (crashedCombo.getSelectedIndex() == 1) { 
       isCrashed = true; 
      } 
      clearFields(); 

      conn = UtilDB.getConnected(); 
      String sql = "insert into cars values(null, ?, ?, ?, ?, ?)"; 
      try { 
       state = conn.prepareStatement(sql); 
       state.setString(1, model); 
       state.setInt(2, year); 
       state.setFloat(3, engine); 
       state.setString(4, regNum); 
       state.setBoolean(5, isCrashed); 
       state.execute(); 
      } catch (SQLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      }finally{ 
       try { 
        conn.close(); 
       } catch (SQLException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 
      } 
      getAllFromDB(); 
     }// end actionPerformed  
    }// end class 
public void clearFields() { 

    modelField.setText(""); 
    yearField.setText(""); 
    engineField.setText(""); 
    regNumField.setText(""); 
    crashedCombo.setSelectedIndex(0); 
    } 

public void getAllFromDB(){ 

     conn = UtilDB.getConnected(); 
     String sql = "select * from cars"; 
     try { 
      state = conn.prepareStatement(sql); 
      result = state.executeQuery(); 
      myModel = new MyModel(result); 
      table.setModel(myModel); 

     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }finally{ 
      try { 
       conn.close(); 
      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 
}// end MyFrame class 

私の事が、イムはわからない...いくつかのアイデアは、それを修正する方法:

 org.h2.jdbc.JdbcSQLException: Data conversion error converting "audi"; SQL statement: 
    select id, engine, regnum, crashed from cars where model=? [22018-193] 
     at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) 
     at org.h2.message.DbException.get(DbException.java:168) 
     at org.h2.value.Value.convertTo(Value.java:972) 
     at org.h2.expression.Comparison.getValue(Comparison.java:255) 
     at org.h2.expression.Expression.getBooleanValue(Expression.java:178) 
     at org.h2.command.dml.Select.queryFlat(Select.java:544) 
     at org.h2.command.dml.Select.queryWithoutCache(Select.java:655) 
     at org.h2.command.dml.Query.query(Query.java:341) 
     at org.h2.command.dml.Query.query(Query.java:309) 
     at org.h2.command.dml.Query.query(Query.java:36) 
     at org.h2.command.CommandContainer.query(CommandContainer.java:110) 
     at org.h2.command.Command.executeQuery(Command.java:201) 
     at org.h2.server.TcpServerThread.process(TcpServerThread.java:319) 
     at org.h2.server.TcpServerThread.run(TcpServerThread.java:158) 
     at java.lang.Thread.run(Unknown Source) 
    Caused by: java.lang.NumberFormatException: For input string: "audi" 
     at java.lang.NumberFormatException.forInputString(Unknown Source) 
     at java.lang.Integer.parseInt(Unknown Source) 
     at java.lang.Integer.parseInt(Unknown Source) 
     at org.h2.value.Value.convertTo(Value.java:920) 
     ... 12 more 

     at org.h2.engine.SessionRemote.done(SessionRemote.java:624) 
     at org.h2.command.CommandRemote.executeQuery(CommandRemote.java:158) 
     at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:110) 
     at MyFrame$SearchAction.actionPerformed(MyFrame.java:177) 
     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) 

私のソースコードがあります? 私の2番目のタスクが

+0

おそらく、モデルはデータベース内の整数です。あなたはそれを確認しましたか? – RubioRic

答えて

-1

..ユーザーはマツダとマセラティを出て行くためにボックスモデルの手紙「MA」で入力したときにMySQLへの同様の要求と要求を作ることだったエラーメッセージは、すべての意見:

入力文字列の場合:java.lang.NumberFormatException:によって引き起こされる「アウディ」

あなたは、文字列の単語変換しようとしている(MSGとしてアウディは示唆...)数

に多分ここに?

case 1: year = Integer.parseInt(searchText.getText()); 
     critiria = "year"; 
     break; 
+0

この行にはエラーがあります:result = state.executeQuery();解析中ではなく、クエリを実行しようとしています。 – RubioRic

0

それは以下のスイッチブロックであることのように見える:searchText又はyearFieldのいずれかがstring値を有し、従って、それはcase 1又は2になったとき、それを変換しようと

 switch(searchCombo.getSelectedIndex()){ 
      case 0: model = searchText.getText(); 
       break; 

      case 1: year = Integer.parseInt(searchText.getText()); 
       critiria = "year"; 
       break; 

      case 2: model = modelField.getText(); 
        year = Integer.parseInt(yearField.getText()); 
      break; 

整数に変換され、NumberFormatExceptionとなります。

0

これはNumberFormatExceptionをスローしています。これは、値 "audi"が数値ではありませんが、数値形式に変換しようとしていることを意味します。

関連する問題