jtabel 遍历_java - 要遍历jTable并将列值传递给Java中的sql查询 - 堆栈内存溢出

这篇博客探讨了如何遍历Java Swing jTable中的数据,提取特定列的值,并使用这些值执行SQL查询。作者尝试通过双重循环遍历表格,然后在每个循环中执行查询,但遇到了问题。解决方案是使用PreparedStatement预编译SQL语句,避免了字符串连接,提高了安全性。最终目标是添加一个新的列,显示查询结果。目前的问题是如何根据查询结果填充新列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个jTable有4列和6行。 我想遍历所有行,以选择列index0的值(这是我的ID列),并将其传递给count sql查询。 我写了下面的代码,因为我还没有弄清楚如何遍历表后如何传递列值,所以无法正常工作。

有人可以让我知道我的代码出了什么问题吗?

for (int row = 0; row > jTable2.getRowCount(); row++){

for (int col =0; col > jTable2.getColumnCount(); col ++)

try{

DefaultTableModel model = (DefaultTableModel)jTable2.getModel();

String selected = model.getValueAt(row, col+1).toString();

String sql = "select COUNT(COURSEBOOKED) from APP.BOOKCOURSE where COURSEBOOKED = '"+selected+"'";

try(Connection con = DriverManager.getConnection("jdbc:derby:MTD","herbert","elsie1*#");

PreparedStatement pst = con.prepareStatement(sql);) {

ResultSet rs = pst.executeQuery();

while(rs.next()){

String Sum = rs.getString("COUNT(COURSEBOOKED)");

System.out.println(Sum);

if (rs.wasNull()){

System.out.println("No record found");

}

}

}

catch(SQLException e){

}

}

catch(Exception e){

}

}

这是更改后提供的最终代码。

String sql = "select COUNT(COURSEBOOKED) as count from APP.BOOKCOURSE where COURSEBOOKED =?";

try(Connection con = DriverManager.getConnection("jdbc:derby:MTD","herbert","elsie1*#");

PreparedStatement pst = con.prepareStatement(sql);){

for(int row = 0; row < jTable2.getRowCount(); row++){

DefaultTableModel model = (DefaultTableModel)jTable2.getModel();

String selected = model.getValueAt(row, 1).toString();

pst.setString(1, selected);

try(ResultSet rs = pst.executeQuery();){

while (rs.next()){

String Sum = rs.getString("count");

System.out.println(Sum);

}

}

}

}

catch(SQLException e){

JOptionPane.showMessageDialog(this, e);

}

这使我想到了下一个问题。 我不确定我应该为此启动一个新线程还是继续执行此线程。 我的挑战是,我现在想在当前jTable2的现有4列上追加一个附加列,并显示上述查询的值。 要添加新列,我已经使用了此代码,

TableColumn c = new TableColumn();

c.setHeaderValue("Training accomplished");

model.addColumn(c);

这将添加该列,但使用列index0中的值填充该列。 我如何从上面的查询中获取由Sum中保存的值填充的新添加的列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值