Hvordan får man data fra et tabel i Access ind i en JList i Java
Jeg er ved at programmere et program i JAVA der skal behandle persondata. Jeg har nu koblet programmet sammen med en ACCESS database og vil nu gerne have alle records/posterne ind i en JList så jeg kan vælge personer herfra.
Dataen befinder sig i et table der hedder patient og det er 2 kolonner med henholdsvis fornaven og efternavne, som jeg skal bruge herfra.
Jeg er i tvivl om hvordan man laver en program struktur der henter alle posterne fra databasen og en efter en smider ("efternavn","fornavn") ind i en JList, hvorfra jeg så kan vælge dem.
Ja det forstår jeg heller ikke.. Jeg ville vælge at ligge dem i en JTable eller en JFrame for sig selv kan evt. gøres sådan:
static TableModel asTableModel(final ResultSet rs) throws SQLException { final Vector columnNames = new Vector(); final Vector rowData = new Vector();
final ResultSetMetaData rsMeta = rs.getMetaData(); for (int i = 1; i <= rsMeta.getColumnCount(); i++) { columnNames.addElement( rsMeta.getColumnName(i) ); }
while ( rs.next() ) { final Vector row = new Vector(); for (int i = 1; i <= rsMeta.getColumnCount(); i++) { row.addElement( rs.getObject(i) ); } rowData.addElement( row ); } return new DefaultTableModel(rowData, columnNames); }
Nu har jeg endelig fået data fra min database ind i en JList. Og hver element i min "vectorliste" der vises i JListen, viser data fra 3 kolonner ved hver records. Dette er helt perfekt.
Nu vil jeg så gerne have det lavet sådan at når jeg trykker på et element i JListen kaster den et actionEvent der søger databasen igennem efter denne record og viser dataene i textfields.
Problemet er bare at jeg skal isolere data fra den første row for at søge og hver element i vector listen består af data fra 3 rows ? Hvordan isolerer jeg det ? Kan jeg lave hver element om til strings - og hvad sker der så hvis jeg bare skal bruge data fra den første row (som forresten er et CPR nummer)...
Her er min kode - uden TextFields og Find-funktion.
for ( int i = 2; i <= rsmd.getColumnCount(); ++i ) if (i <= 4) { switch( rsmd.getColumnType( i ) ) { case Types.VARCHAR: currentRow.addElement( rs.getString( i ) ); break; case Types.INTEGER: currentRow.addElement( new Long( rs.getLong( i ) ) ); break; default: System.out.println( "Type was: " + rsmd.getColumnTypeName( i ) ); }}
public static void main( String args[] ) { final TableDisplay app = new TableDisplay();
app.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { app.shutDown(); System.exit( 0 ); } } ); } }
Håber en venlig sjæl kan hjælpe mig
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.