06. november 2006 - 12:22Der er
12 kommentarer og 1 løsning
Opret liste med brugere fra DB med unikt ID.
Jeg har en jList som jeg gerne vil have fyldt ud med brugere fra en DB. Jeg har en klasse som laver et ResultSet fra en SQL-sætning og med denne laver jeg dette:
ResultSet brugere = database.executeQuery("SELECT id, fornavn, efternavn FROM brugere");
Hvordan får jeg nu udfyldt min liste med resultatet herfra?
Samtidig er det MEGET vigtigt at hver række i listen på en eller anden måde får tilknyttet id'et tilhørende den respektive bruger, i det jeg skal bruge dette hvis jeg vil opdatere, slette el. lign.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
1) Opret et objekt der modsvarer din tabel i databasen - altså med id, navn, etc. overskriv eventuelt toString metoden, så du kan få en repræsentation af objektet i listen. 2) Løb dit resultset igennem og opret objekter ud fra de data du trækker ud. 3) Tilføj dit objekt til din jlist med addObject metoden.
Men vil der så ikke i min lsite, stå de forskellige brugers id'er? Jeg ønsker blot at få skrevet deres navne ud, men stadig få tilknyttet deres id til senere brug.
//Get + Set metoder public int getID() { return this.id; } }
public class MyClass {
public MyClass() {
}
//Metode der opretter liste: public Vector<Bruger> getBrugerVector() { Vector<Bruger> brugerVector = new Vector<Bruger>(); ResultSet rs = database.executeQuery("SELECT id, fornavn, efternavn FROM brugere"); while (rs.next()) { //Kan aldrig huske om column starter fra 0 eller 1 String id = rs.getInt(1); String fornavn = rs.getString(2); String efternavn = rs.getString(3); Bruger b = new Bruger(); brugerVector.add(b); } return brugerVector; } }
//Kode vedrørende JList
MyClass my = new MyClass(); JList jList = new JList(my.getBrugerVector());
//Til at få fat i selected objekt i JList Bruger bruger = (Bruger) jList.getSelectedValue(); int id = bruger.getID();
Og præcis det opnår du ved at gøre som jeg beskriver. Du kan jo selv bestemme hvad du vil vise via toString metoden. Der kan du jo bare returnere fornavnnavn + efternavn eller hvad du nu ønsker. Senere kan du så tilgå de objekter og hive id ud derfra.
Jeg ved godt, det ikke lige er helt forklaret i mit spørgsmål, men hvad nu hvis jeg f.eks. har brugerne i en tabel i stedet og gerne vil opdatere brugeren med id 5. Er der så ikke en metode, hvor man kan opdatere netop den brugere i tabellen uden at skulle løbe alle rækkerne igennem for at finde ud af hvilken bruger der har netop dette id og dermed hvilken række man skal opdatere?
Når det gælder JList kan du finde ud af hvilken bruger han har valgt at ændre: Bruger bruger = (Bruger) jList.getSelectedValue(); Når du har fundet brugeren er det blot at sætte værdier.
Når det er en JTable tilføjer du en listener til dit JTable. En listener hvor du fx. har overskrevet tableChanged(TableModelEvent e). Du kan herefter finde ud af hvilken row/column brugeren har ændret i. Såfremt du i dit JTable har en ID-column row kan du finde ud af hvilken bruger det er. Du kan også gå ud fra hvilken row-index det er. Det kræver så, at dine objekter er placeret på tilsvarende index i din liste med brugere.
Ved SQL bruger du update med where til at specificere hvilken bruger du vil updatere.
Ps. Det kan være det kan gøres på andre måder når du anvender JTable. Jeg er ikke JTable ekspert :D .
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.