MySQL und Java - Problem

datenmuell

Grünschnabel
Hallo zusammen,

ich möchte gerne aus einer Datenbank zeilenweise Werte auslesen und nach dem Auslesen/Abspeichern der Werte die komplette Zeile löschen. Hört sich einfach an, aber irgendwie funktioniert das nur beim ersten Wert, danach wird die Exception "Operation not allowed after ResultSet closed" geworden. Mein Programmcode ist angehängt.

Die Exception erscheint wohl, weil beim Aufruf von myRS.next() das ResultSet geschlossen wird und so beim nächsten Element nicht mehr verfügbar ist. Weiß jemand, wie ich das Programm umschreiben kann, so dass keine Exception mehr geworfen wird?

Danke schonmal & viele Grüße
datenmuell


Java:
						// Treiber laden
					    try
					    {
					    	Class.forName("com.mysql.jdbc.Driver").newInstance();
					    }
					    catch(Exception ex)
					    {
					    	System.out.println("Could not load driver!");
					    }
						Connection conn = null;
						
						// Verbindung aufbauen
						try
						{
						    conn = DriverManager.getConnection("jdbc:mysql://129.217.186.119/meineDB"+"?verifyServerCertificate=false"+"&useSSL=false"+"&requireSSL=false"+"&user=meinUsername"+"&password=XXXXXXXXXXX");
						    Statement stmt = conn.createStatement();
						    
						    ResultSet myRS = stmt.executeQuery("SELECT * FROM urls ORDER BY id ASC");
						    String output = null;
						    String actualID = null;
						    
						    while(myRS.next())
						    {
						    	actualID = myRS.getString("id");
						    	output = myRS.getString("url");
						    	System.out.println(output+" wurde an QM gesendet! ("+actualID+")");
						    	// TODO: SENDE URL ZUR WEITERVERARBEITUNG AN ANDEREN DIENST
						    	stmt.close();
							    stmt.executeUpdate("DELETE FROM urls WHERE id='"+actualID+"'");
						    }
							stmt.close();
							conn.close();
						}
						catch (SQLException ex)
						{
						    System.out.println("SQLException: " + ex.getMessage());
						    System.out.println("SQLState: " + ex.getSQLState());
						    System.out.println("VendorError: " + ex.getErrorCode());
						}
 
Hallo,

ich glaube in Zeile 28 ist das
stmt.close(); zu viel.

Bzw. musst du dir IMHO für das Update jeweils ein neues Statement erzeugen.

Gruß Tom
 

Neue Beiträge

Zurück