Datenbank Abfrage: Es fehlt immer ein Eintrag!

  • Themenstarter Themenstarter Bernhard
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
B

Bernhard

Gast
Hallo,

ich möchte mit JAVA eine Datenbankabfrage machen, alles funktioniert nur das immer genau ein (der letzte) Eintrag der Tabelle nicht ausgegeben wird.

Hier der Code zur Abfrage:

while(result.next()){
for (int i=1;i<= columnCount;i++ ){
System.out.println(result.getString(i)); //
}
}


Bitte um Hilfe!

Danke!
 
Die letzte Zeile oder die letzet Spalte?

Bei Zeile: Es wird einfach nicht mehr gefunden

Bei Spalte: columnCount stimmt so oder muss das evtl. um 1 größer sein?
 
Ändere mal den Kopf der Schleife:
Code:
for (int i = 0; i < columnCount; i++)
Vielleichts gehts dann...
 
Danke für die Antworten erst mal.

Nein, es fehlt immer genau eine Zeile:

Datenbank Kunden

Code:
id firma adresse
1 Huber Testgasse 1
2 Maier Testgasse 2
3 Gruber Testgasse 3

Wenn ich das auslese von der Datenbank kommt nur id 1 und 2 - die dritte fehlt:

Code:
Ausgabe Console mit "SELECT * FROM kunden ORDER BY 1 DESC"
1 Huber Testgasse 1
2 Maier Testgasse 2
Code:
Ausgabe Console mit "SELECT * FROM kunden"
2 Maier Testgasse 2
3 Gruber Testgasse 3

Hier die Klasse DATENBANK

Code:
public ArrayList<ArrayList> readOutNormal(String command) throws IOException, SQLException{
		
		//Neue ArrayList wird erstellt(Multi)
		arrayL = new ArrayList<ArrayList>();
		
		//Hinzufügen zu Arraylist von 3 ArrayLists (INT, String,INT)
		arrayL.add(new ArrayList<Integer>()); //ID
		arrayL.add(new ArrayList<String>());  //Firma
		arrayL.add(new ArrayList<String>());  //Zusatz
		arrayL.add(new ArrayList<String>());  //Strasse
		arrayL.add(new ArrayList<String>());  //PLZ_ORT

		
		Connection conn = getConnection();
		Statement stat = conn.createStatement();
		
		ResultSet result=stat.executeQuery(command);
		result.next();
		

		//Datenbank wird in ArrayList eingelesen
		while(result.next()){
			
	
			int tmp=result.getInt(1); //ID
			String tmp1=result.getString(2); //Firma
			String tmp2=result.getString(3); //Zusatz
			String tmp3=result.getString(4); //Strasse
			String tmp4=result.getString(5); //PLZ_ORT
			
			arrayL.get(0).add(0, tmp);
			arrayL.get(1).add(0, tmp1);
			arrayL.get(2).add(0, tmp2);
			arrayL.get(3).add(0, tmp3);
			arrayL.get(4).add(0, tmp4);
			
		

		}

		result.close();
		stat.close();
		return arrayL;
	}


DANKE!
 
Es fehlt immer die erste Zeile. :wink:
Siehe Zeile 18 in deinem Code. das result.next(); überliest die eine Zeile.

Das sind so Momente, wo man sich selbst mit Anlauf in den A... tretten möchte, was? :bae:
 
Übrigens, gestalte den Code etwas um, damit du immer die Connection freigibst.
So, wie du es z.Z. hast, kann es dazu kommen, dass du sie nicht schliesst.

Mindestens ein finally-Block, wo Statement und Connection freigegeben werden
Code:
Connection conn = null;
Statement stat = null;

try
{
   conn = getConnection(); 
   stat = conn.createStatement();
   
   ... rest
}
finally
{
   if(stat != null)
   {
      try { stat.close(); } catch(SQLException e) { ... Fehler loggen }
   }
   if(conn != null)
   {
      try { conn.close(); } catch(SQLException e) { ... Fehler loggen }
   }
}
 
Vielen Dank!

Es kann so einfach sein...

🙂

:applaus: :applaus: :applaus: :applaus: :applaus:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben