【发布时间】:2018-05-16 04:31:44
【问题描述】:
我正在尝试使用汽车品牌、型号以及是否可用来填充 Java 数据库,但我有一个大问题。当我输入多辆汽车到桌子上时,新车会打印到桌子上,但我以前输入过的汽车也会重新打印 [问题.png][1]。所以首先我进入了法拉利恩佐,然后我进入了特斯拉 S,但法拉利恩佐正在重复。
我知道问题不在于将汽车添加到数据库中,因为如果我查看数据库,它只会显示我输入的两个 [DatabasePic.png][2]。我知道我的问题在于如何将我的汽车输入 JTable。我的方法如下..
按钮点击事件:
private void refreshbtnMouseClicked(java.awt.event.MouseEvent evt) {
try {
String Brand = brandlbl.getText();
String Model = modellbl.getText();
Boolean Available = false;
switch (availabilitybox.getSelectedItem().toString()) {
case "True":
Available = true;
break;
case "False":
Available = false;
break;
}
InsertApp nw = new InsertApp();
nw.insert(Brand, Model, Available);
nw.refreshDatabase(jTable1);
} catch (SQLException ex) {
Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
}
}
插入方法:
public void insert(String brand, String model, Boolean available) {
String sql = "INSERT INTO CARDATA(brand,model,available) VALUES(?,?,?)";
try (Connection conn = this.connect();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, brand);
pstmt.setString(2, model);
pstmt.setBoolean(3, available);
pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
刷新我的数据库:
public void refreshDatabase(JTable table) throws SQLException {
Connection con = connect();
String SQL = "SELECT * FROM CARDATA";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
int col = rs.getMetaData().getColumnCount();
System.out.println(col);
while (rs.next()) {
Object[] rows = new Object[col];
for (int i = 1; i <= col; i++) {
rows[i - 1] = rs.getObject(i);
}
((DefaultTableModel) table.getModel()).insertRow(rs.getRow() - 1, rows);
}
con.close();
rs.close();
stmt.close();
}
【问题讨论】:
标签: java mysql database swing jdbc