Finde fehler nicht!

benija

Grünschnabel
Hallo!
ich will daten aus einer datenbank mit hilfe einer liste ausgeben. Mit einer IndexListe, damit nur die daten ausgegeben werden, die in der datenbank nur einmal vorkommen können (primary key). Aber irgendwie liefert mir die Konsole kein ergebnis.

IndexListe:
Code:
public class IndexListe {
    
private  ArrayList inhalt = new ArrayList() ;

         public void addIndexAnListe(String str)
	{
		this.inhalt.add(str);
	}

        public Handy getIndexAtPos (int index)
	{
		return  (Handy) this.inhalt.get(index);
		
	}
        
        public int getSize()
	{
		return this.inhalt.size();
	}
    
}


DAO_IndexListe:
Code:
public class DAO_IndexListe {
    
        public IndexListe erzeugeIndexListe();
	{
		IndexListe inLi = new IndexListe();
		String sqlAnw ="Select typ from Schueler";	
		
		
		
		try 
		{
	         Connection connDB = DBVerbindung.createAccessVerbindung() ;	         
	         PreparedStatement pStat = connDB.prepareStatement(sqlAnw) ;

	         ResultSet rSet = pStat.executeQuery() ;

	         while (rSet.next())
	         {
	             String key = rSet.getString("typ");
	           
	         }
	         
	        
             
	         DBVerbindung.destroyVerbindung() ;
			
		} 
		
		catch (Exception e) 
		{
			// TODO: handle exception
		}
		return inLi ;
	}
    
}

IndexListeAugabe:
Code:
public class IndexListeAusgabe {
    

    public static void main(String[] args) {
       
        DAO_IndexListe dao = new DAO_IndexListe();
        IndexListe inLi = dao.erzeugeIndexListe();
        
        for(int i = 0; i < inLi.getSize(); i++)
        {
            handy ha = inLi.getIndexAtPos(i);
            System.out.println(inLi);
        }
        
    }
    
}

wenn jemand was weiß, währe ich euch sehr dankbar.
 
Dein Programm ist ein wenig... naja... komisch..


1.)
Mal von ausgehend das deine
ResultSet rSet = pStat.executeQuery() ;
wirklich ein resultset zurück gibt musst du auch die einträge
in die
Code:
 IndexListe inLi = new IndexListe();
speichern die dein return wert ist... du erstellst die Liste und fügst kein Element hinzu..
folglich ist die Liste dann leer..

In der Schleife:
Code:
 while (rSet.next())
	         {
	             String key = rSet.getString("typ");
	           
	         }
fehlt:
Code:
inLi.addIndexAnListe(rSet.getString("typ");)

2.)
dann ist

Code:
handy ha = inLi.getIndexAtPos(i);

handy klein geschrieben.

3.)
Und dann noch die Typenumwandlung:

return (Handy) this.inhalt.get(index);

wobei du die Enträge als String speicherst
Code:
  public void addIndexAnListe(String str)
	{
		this.inhalt.add(str);
	}

Du kannst auch sowas machen
Code:
ArrayList<Handy> inhalt = new ArrayList<Handy>() ;
und änderst demenstprechend die addIndex vlt. zu sowas...
Code:
  public void addIndexAnListe(String str)
	{
               Handy  h = new Handy(str)
		this.inhalt.add(h);
	}


4.)
Bei der Ausgabe:

Code:
  for(int i = 0; i < inLi.getSize(); i++)
        {
            handy ha = inLi.getIndexAtPos(i);
            System.out.println(inLi);
        }

also ich kenne deine Klasse Handy zwar nicht... (wie gesagt, sollte gross geschrieben werden), aber dein System.out.println(inLi) soll was zurückgeben ?
sollte vlt dein Handy Typ zurück geben:
Code:
 System.out.println(ha.getTyp());




Ich bin nicht gerade der Super-Programmierer und will dir nicht auf die Füsse treten ,aber es hat den Anschein, dass dir so ein wenig die Grundlagen fehlen.

n8 und cheers
 
Zuletzt bearbeitet:
Zurück