你能帮我理解一下这个Java SE代码吗?

时间:2015-11-15 09:18:52

标签: java mysql sql swing jtable

我尝试将结果集传递给while(rst.next()){ Object [] riga = new Object [numeroColumns]; for(int y = 0; y<numeroColumns; y++){ riga [y] = rst.getObject(y+1); } model.addRow(riga); } ,我找到了这段代码,但我无法理解它是如何工作的,特别是这部分代码:

getObject

为什么我们在private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try{ Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/datazanzariere?zeroDateTimeBehavior=convertToNull", "root", "admin"); Statement stm = conn.createStatement(); ResultSet rst = stm.executeQuery("SELECT * FROM riepilogoordine"); ResultSetMetaData rsMd = rst.getMetaData(); int numeroColumns = rsMd.getColumnCount(); DefaultTableModel model = new DefaultTableModel(); this.jTable1.setModel(model); for (int x = 1; x <= numeroColumns; x++){ model.addColumn(rsMd.getColumnLabel(x)); } while(rst.next()){ Object [] riga = new Object [numeroColumns]; for(int y = 0; y<numeroColumns; y++){ riga [y] = rst.getObject(y+1); } model.addRow(riga); } } catch(ClassNotFoundException | SQLException ce){ ce.printStackTrace(); } } 方法中添加y + 1?

这是完整的代码:

Invariant Violation: Invalid tag: {HelloWorld}

2 个答案:

答案 0 :(得分:1)

因为ResultSet列索引从1而不是0开始。 所以在getObject()索引param应该从1开始

答案 1 :(得分:1)

documentation for ResultSet个州&#34; columnIndex - 第一列是1,第二列是2,...&#34;。因此,代码使用numeroColumns将行1提取到getObject(包括),并将它们放在numeroColumns-1的索引0到riga中。