我尝试将结果集传递给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}
答案 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
中。