2016-04-04 11 views
0
try { 
    Statement stmt = conn.createStatement(); 
    String sql = "CREATE OR REPLACE FUNCTION search_admin(p_username IN varchar2) \n"+ 
       "RETURN SYS_REFCURSOR \n" + 
       "AS \n" + 
       "my_cursor SYS_REFCURSOR; \n" + 
       "BEGIN \n" + 
       "OPEN my_cursor FOR SELECT * FROM login where username=p_username; \n" + 
       "RETURN my_cursor; \n" + 
       "END; \n"; 

    stmt.execute(sql); 

    CallableStatement cstmt = conn.prepareCall("BEGIN " + "? :=search_admin(?); " + "END; "); 
    cstmt.registerOutParameter(1, OracleTypes.CURSOR); 
    cstmt.setString(2, UserText3.getText()); 
    cstmt.execute(); 

    rs = (ResultSet) cstmt.getObject(1); 

    if(!rs.isBeforeFirst()) { 
    JOptionPane.showMessageDialog(null, "Invalid Username"); 
    } 
    else { 
    DeleteTable.setModel(DbUtils.resultSetToTableModel(rs)); 
    DeleteTable.setEnabled(false); 
    } 

    while(rs.next()) { 
    NameLabel.setText(rs.getString("name")); 
    UsernameLabel.setText(rs.getString("username")); 
    PasswordLabel.setText(rs.getString("password")); 
    } 
} catch(Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
} 

i zeigen wollen, den Benutzernamen, Name, Passwort im jlabels aber es zeigt nicht ... Ich habe eine gespeicherte Funktion in Datenbank mit dem Namen search_admin. Wenn ich das Programm ausführen keine Fehler in der gezeigten aber die jlabels nicht die resultset Daten zeigen.JLabels ist nicht die Ergebnisse in den JLabels zeigt

+0

Die folgende Zeile erschöpft wahrscheinlich das ResultSet: 'DbUtils.resultSetToTableModel (rs)', so dass Sie nichts mehr zu lesen haben. – Berger

+0

Was ist die Lösung dann? –

Antwort

0

Diese Linie scheint die ResultSet erschöpfen:

DbUtils.resultSetToTableModel(rs) 

Unter der Annahme, dass es eine Instanz von TableModel zurückgibt, können Sie seinen Inhalt auf diese Weise sehen, anstatt zu versuchen, die ResultSet wieder zu lesen:

 for(int i =0;i<model.getRowCount();i++){ 

      for(int j=0;j<model.getColumnCount();j++){ 

       System.out.println(model.getValueAt(i, j)); 
      } 
     } 
Verwandte Themen