首页 > 解决方案 > Java Swing:将 JTable 列插入 mysql 数据库

问题描述

我试图从 java swing 表单将数据插入 mysql 数据库,其中我有两个文本字段值和一个表列值。我的插入过程出现问题。我正在尝试将 jtable 列的行插入数据库,但我发现那里插入了数据库中最后一行的值。

我做了以下代码。

String customer_name = nametf.getText();
String phone = phonetf.getText();

PreparedStatement ps;
ResultSet rs = null;

String salesQuery = "INSERT INTO `sales`(`Customer_Name`, `Phone`,`Items`) VALUES (?,?,?)";

try {
    ps = my_con.getConnection().prepareStatement(salesQuery);

    ps.setString(1, customer_name);
    ps.setString(2, phone); 

    for(int i=0; i<table1.getRowCount();i++){
        ps.setString(3, table1.getValueAt(i, 0).toString());
    }

    if(ps.executeUpdate() != 0){
        JOptionPane.showMessageDialog(null,"\nSave Succesfully\n\n","Saved",1);
    }
    else {
        JOptionPane.showMessageDialog(null,"\nCheck Error\n\n","Error",1);
    }
}
catch (SQLException ex) {
    Logger.getLogger(registration.class.getName()).log(Level.SEVERE, null, ex); 
}

标签: javamysqlswing

解决方案


但我发现那里插入了数据库中最后一行的值。

在您的循环中,您继续设置第三个参数。

您只调用该executeUpdate(...)语句一次,因此只更新最后一行。

您需要为表中的每一行执行 SQL 语句:

for(int i=0; i<table1.getRowCount();i++){
    ps.setString(1, customer_name);
    ps.setString(2, phone); 
    ps.setString(3, table1.getValueAt(i, 0).toString());
    ps.executeUpdate();
}

请注意,您还可以对数据库进行批量更新。查看:使用 jtable 单元格中的 where 参数更新 mysql 表,以获取此方法的示例。您需要将问题中的代码与答案中的代码结合起来才能查看完整的批处理实现。


推荐阅读