java - 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);
}
解决方案
但我发现那里插入了数据库中最后一行的值。
在您的循环中,您继续设置第三个参数。
您只调用该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 表,以获取此方法的示例。您需要将问题中的代码与答案中的代码结合起来才能查看完整的批处理实现。
推荐阅读
- c - 使用 c 宏生成函数名
- python - Pandas:重复列值 n 次并滚动未来日期
- types - 朱莉娅: ceil/floor 可以返回一个整数吗?
- batch-file - 如何从批处理文件(parent.bat)执行批处理脚本(child.bat)?原始问题(C# 以编程方式在 Venv 中运行 Pip 安装)
- scrollview - 斯巴达克斯店面| 向下滚动结果列表然后单击产品后,返回结果时应记住位置
- vue.js - Vuejs 在`npm run serve` 后显示空白页并使用 IIS 设置
- java - jsp/servlet eclipse 项目中上传的文件(jpg/pdf 等)未在文件夹中打开
- javascript - 动画多读/少读略显
- c# - 如果已经运行并使用取消令牌再次运行它,如何取消异步方法?
- google-apps-script - 尝试访问回调 URL -> Google Drive 消息时:抱歉,此时无法打开文件。请检查地址并再试一次