我的Java应用程序有一些错误
我的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
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;