我的Java应用程序有一些错误

我的Java应用程序有一些错误,java,forms,Java,Forms,我的Java应用程序有一些错误,我不知道哪里是我的错误代码 我的错误是: 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.getJdb

我的Java应用程序有一些错误,我不知道哪里是我的错误代码

我的错误是:

        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)
我的源代码是:

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
导入java.awt.Dimension;
导入java.awt.FlowLayout;
导入java.awt.GridLayout;
导入java.awt.Toolkit;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.sql.Connection;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入javax.swing.ImageIcon;
导入javax.swing.JButton;
导入javax.swing.JComboBox;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.JTable;
导入javax.swing.JTextField;
公共类MyFrame扩展了JFrame{
连接conn=null;
连接conn1=null;
PreparedStatement状态=null;
PreparedStatement state1=null;
ResultSet result=null;
结果集result1=null;
MyModel MyModel=null;
MyModel myModel1=null;
JPanel-topPanel=新的JPanel();
JPanel midPanel=新的JPanel();
JPanel下面板=新的JPanel();
JPanel midPanelUp=新的JPanel();
JPanel midPanelDown=新的JPanel();
JLabel modelLabel=新的JLabel(“模型:”);
JLabel yearLabel=新的JLabel(“年份”);
JLabel engineLabel=新的JLabel(“引擎:”);
JLabel crashedlab=新JLabel(“已崩溃”);
JLabel regNumLabel=新JLabel(“注册号:”);
JTextField modelField=新的JTextField();
JTextField yearField=新的JTextField();
JTextField engineField=新的JTextField();
JTextField regNumField=新的JTextField();
JTextField searchText=新的JTextField(10);
字符串[]内容={“否”,“是”};
JComboBox crashedCombo=新的JComboBox(内容);
字符串[]searchContent={“Model”,“Year”,“Mix”};
JComboBox searchCombo=新的JComboBox(searchContent);
JButton addButton=新JButton(“添加”);
JButton removeButton=新JButton(“删除”);
JButton updateButton=新JButton(“更新”);
JButton searchButton=新JButton(“搜索”);
JTable table=新的JTable();
JScrollPane scroller=新的JScrollPane(表);
公共MyFrame(){
此.setVisible(true);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这个。设置大小(400600);
此设置位置(700400);
这个.setLayout(新的GridLayout(3,1));
添加(托帕内尔);
添加(中间面板);
添加(下面板);
//托帕内尔
topPanel.setLayout(新网格布局(5,2));
topPanel.add(型号标签);
topPanel.add(模型字段);
topPanel.add(年标);
topPanel.add(yearField);
topPanel.add(引擎标签);
topPanel.add(引擎字段);
topPanel.add(regNumLabel);
topPanel.add(regNumField);
topPanel.add(碰撞标签);
添加(crashedCombo);
//端托帕内尔
//中间板
设置布局(新的网格布局(2,1));
midPanel.add(midPanelUp);
midPanel.add(midPanelDown);
添加(删除按钮);
addActionListener(新的RemoveAction());
添加(updateButton);
addActionListener(新的UpdateAction());
添加(添加按钮);
addButton.addActionListener(新的AddAction());
添加(搜索按钮);
添加(searchCombo);
添加(搜索文本);
addActionListener(新的SearchAction());
//端部中间板
//下面板
scroller.setPreferredSize(新尺寸(350150));
添加(滚动条);
getAllFromDB();
//端部下面板
}
公共类SearchAction实现ActionListener{
@凌驾
已执行的公共无效操作(操作事件e){
字符串模型=null;
国际年=1908年;
字符串critiria=“model”;
开关(searchCombo.getSelectedIndex()){
案例0:model=searchText.getText();
打破
案例1:year=Integer.parseInt(searchText.getText());
critiria=“年”;
打破
案例2:model=modelField.getText();
year=Integer.parseInt(yearField.getText());
打破
}
conn=UtilDB.getConnected();
conn1=UtilDB.getConnected();
String sql=“选择id、引擎、regnum、来自汽车的碰撞”+“其中”+critiria+“=?”;
String sqlMix=“选择id、model、engine、regnum、crash”+“from cars”+“where model like?”和year>=?”;
试一试{
state1=conn1.prepareStatement(sqlMix);
}捕获(SQLException e2){
//TODO自动生成的捕捉块
e2.printStackTrace();
}
if(searchCombo.getSelectedIndex()==2){
试一试{
状态1.设置字符串(1,型号+“%”);
状态1.setInt(2年);
result1=state1.executeQuery();
myModel1=新的MyModel(结果1);
表2.setModel(myModel1);
}捕获(SQLException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}捕获(异常e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
}
试一试{
state=conn.prepareStatement(sql);
if(searchCombo.getSelectedIndex()==0){
state.setString(1,型号);
}
否则{
state.setInt(1年);
}
结果=state.executeQuery();
myModel=新的myModel(结果);
表2.setModel(myModel);
}捕获(SQLException e1){
//TODO自动生成的cat
case 1: year = Integer.parseInt(searchText.getText());
       critiria = "year";
       break;
        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;