05. juli 2004 - 23:58Der er
16 kommentarer og 1 løsning
Finde specifikke ting i database
Jeg sidder og roder med noget database til CDer. Jeg prøver at hente alle albums ud som en artist har lavet, men af en eller anden grund henter den alle albums for alle artister i databasen ud.
Jeg er ikke nogen haj til java, så jeg er måske helt forkert på den :)
Jeg har følgende kode: -- Controller klasse -- public void getArtistCDer(String artist) { RDBOperations rdb = new RDBOperations(); Vector v = new Vector(); rdb.openDb(); v = rdb.getAlleCDer(); rdb.closeDb();
for (int i = 0; i < v.size(); i++) { CD c = (CD) v.elementAt(i); if (artist == c.getArtist()){ rdb.openDb(); rdb.getArtistCDer(c.getArtist()); rdb.closeDb(); } } }
-- RDBOperations -- public Vector getArtistCDer(String artist) { CD c; Vector cder = new Vector();
try { rs = stmt.executeQuery("SELECT artist FROM cder"); } catch (Exception ex) { System.err.println("Fejl i database getArtistCDer " + ex.getMessage()); }
try { while (rs.next()) { c = new CD(); c.setCdnummer(rs.getInt("cdnummer")); c.setArtist(rs.getString("artist")); c.setAlbum(rs.getString("album")); String tekst = ""; tekst = rs.getString("udlaan"); if (tekst.equals("true")) { c.setUdlaan(true); } else { c.setUdlaan(false); } cder.addElement(c); System.out.println(c); } } catch (Exception ex) { System.err.println("Fejl i while-løkke: " + ex.getMessage()); } return cder; }
-- run klasse -- c.getArtistCDer("Audio Adrenaline");
ok... Jeg har nu sat denne ind: rs = stmt.executeQuery("SELECT * FROM cder WHERE artist='" + artist + "'"); Det var egentligt ret åbenlyst :) Dog virker det stadig ikke... har lige fundet ud af at c.getArtist() returnerer alle artister i databasen - det er da vist ikke lige meningen? Nogen forslag?
public void setCdnummer(int cdnummer) {this.cdnummer = cdnummer;} public void setArtist(String artist) {this.artist = artist;} public void setAlbum(String album) {this.album = album;} public void setUdlaan(boolean udlaan) {this.udlaan = udlaan;}
public int getCdnummer() {return cdnummer;} public String getArtist() {return artist;} public String getAlbum() {return album;} public boolean getUdlaan() {return udlaan;}
public String toString(){ return "CD-nummer: " + cdnummer + "\nArtist: " + artist + "\nAlbum: " + album + "\nUdlånt: " + udlaan + "\n"; }
Derudover er det lidt skørt at hente alle CD-er v = rdb.getAlleCDer(); og så løbe dem igennem for at finde nogle udvalgte, når du nu har public Vector getArtistCDer(String artist) { Når du kalder den, bruger du ikke dens returværdi til noget.
...og lidt rodet at have 2 metoder med samme navn: getArtistCDer ;)
rs.getString("album") giver en exception hvis du ikke har den med i din SELECT - men på grund af == ovenfor kaldes den ikke. Derfor har du ikke fået fejl på den.
Lige præcis ;) Men nu virker det rent faktisk lige på nær et par småting - så jeg siger mange tak for hjælpen! Hvordan er det lige med point? Skal du ikke poste som svar for at jeg kan give dig dem?
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.