2013-06-27 71 views
2

我想从数据库中检索数据并显示到。我是在Netbeans的工作的JLabel,我已经这样做了..从数据库中检索到的JLabel

private void showActionPerformed(java.awt.event.ActionEvent evt) {          
    int row=jTable1.getSelectedRow(); 
    int column=jTable1.getSelectedColumn(); 
    String str=(String)jTable1.getValueAt(row,column); 

    try{ 
    rs=stat.executeQuery("select * from table3 where e_id='"+str+"'"); 

    jLabel1.setText(rs.getString("name")); 
    jLabel12.setText(rs.getString("e_id")); 

    } 
    catch(Exception e) 
    {System.out.print(e);} 


} 

它无法显示任何内容。 我在记事本和它的工作正常,但不是在netbeans中试过。
任何帮助表示赞赏。

+0

u得到什么异常的PreparedStatement /? – MaVRoSCy

回答

3

你应该得到列信息之前调用ResultSet#next()

rs=stat.executeQuery("select * from table3 where e_id='"+str+"'"); 
    while(rs.next()){ 
    jLabel1.setText(rs.getString("name")); 
    jLabel12.setText(rs.getString("e_id")); 
    } 

我强烈建议你使用,而不是简单的语句这将使你的代码容易出现SQL注入

+0

谢谢你现在的工作。但为什么我的代码在没有rs.next()的记事本中工作? – Ani

+0

@ani不用客气。我不认为它会在没有调用ResultSet#next()的情况下工作。 – PermGenError

0

试试这个

while (rs1.next()) { 
    k= new Object[8][8]; 
    k[i][0] = rs1.getString("st_id"); 
    k[i][1] = rs1.getString("name"); 
    k[i][2] = rs1.getString("adm_year"); 
    k[i][3] = rs1.getString("crrt_year"); 
    k[i][4] = rs1.getString("mcode"); 
    k[i][5] = rs1.getString("grade"); 
    k[i][6] = rs1.getString("credit"); 
    k[i][7] = rs1.getString("attempt"); 
    System.out.println(k[i][4]); 
    i++; 

    } 
    jTable1.setModel(new DefaultTableModel(k, new String[]{"Student ID", "Name", "Admmission Year", "Current Year", "Modules", "Grade", "Credit", "Attempt"}))