Probleme mit ResultSet

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo!

Ich versuche momentan über eine SQL-Abfrage einen Wert an das ResultSet zurückzugeben.

Code:
rs1 = stmt.executeQuery("SELECT sum(Beitrag) FROM Mitgliedsdaten);
Dieses rs1 möchte ich nun in einem Servlet ausgeben.
Code:
out.println("<td>" + rs1);
Aber irgendwie funktioniert das nicht!

Hat jemand eine Idee wie man das noch machen kann?

Bin für jede Hilfe dankbar.

[Edit by foobar: Codetags eingefügt]
 
Das kann ja nichts werden, du mußt erst den Pointer auf den ersten Datensatz setzen und einen Wert lesen.

Code:
if (rs1.next())
{
  out.println("<td>" + rs1.getInt(1)); 
}
 
Danke!

Hat jetzt funktioniert. Gleichzeitig hat sich aber ein neues Problem aufgetan.

Ich hab noch ein zweites ResultSet in meinem Servlet. Das Problem ist jetzt, wenn ich das genauso wie das erste behandle, bekomme ich gar keine Ergebnisse mehr.

Hier der Quellcode. Bin für jede Hilfe dankbar.
Code:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;

public class Beitrag extends HttpServlet implements Serializable {
  private static final String CONTENT_TYPE = "text/html";




//Process the HTTP Get request
  public void service(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException
  {
    //String strTextfeld1, strTextfeld2;
    Connection con = null;
    Statement stmt = null;
    PrintWriter out = null;


    ResultSet rs1 = null;
    ResultSet rs2 = null;
   
    String wert1 = null;
    String wert2 = null;
    

    response.setContentType(CONTENT_TYPE);
    out = response.getWriter();


    try
    {
      Class.forName("com.mysql.jdbc.Driver");
      try
      {
        con = DriverManager.getConnection("jdbc:mysql://localhost/fitness","root","tokra");
      }
      catch (Exception ex){}
      try
     {
       stmt = con.createStatement();
     }
     catch (Exception ex){}
     try
    {
      rs1 = stmt.executeQuery("SELECT sum(Beitrag) FROM Mitgliedsdaten");
      rs2 = stmt.executeQuery("SELECT sum(Beitrag) FROM Mitgliedsdaten where Vertragstyp='Fussball'");
      
    }
    catch (Exception ex){}
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Beiträge</title>");
    out.println("</head>");
    out.println("<body text='#000000' bgcolor='#FFFF00' link='#FF0000' alink='#FF0000' vlink='#FF0000'>");
    out.println("<center>");
    out.println("<h1>Beiträge aller Mitglieder</h1>");
    out.println("<table>");


    try
   {
	

        out.println("<tr>");
        out.println("<td></td>");
        out.println("<td>&&&&&</td>");
        out.println("<td>[b] Summe aller Beiträge:");
        out.println("

 Summe aller Beiträge für Fussball:");
        out.println("[/b]</td>");
        out.println("<td>&&&&&</td>");

      while (rs1.next())
      {
         wert1 = rs1.getString(1).trim();   
      }

     while (rs2.next())
      {
         wert2 = rs2.getString(1).trim();   
      }

	  out.println("<td>" + wert1);
          out.println("

" + wert2);
        out.println("</td>");
    out.println("</tr>");
    out.println("</table>");
    out.println("
");
    out.println("</center>");



 }
 catch (Exception ex){}


    out.println("</body>");
    out.println("</html>");



    }
    catch (ClassNotFoundException e)
    {
      out.println(e.getMessage());
    }
    finally
    {
      try
      {
        if (con != null) con.close();
      }
      catch (SQLException ignored) {}
    }
  }

}
Edit sebastian: CODE TAGS
 
vielleicht tritt eine Exception auf?
mit catch (Exception ex){} wirst du davon wenig erfahren,
nimm lieber
catch (Exception ex){
ex.printStachTrace();
out.println(ex.getMessage());
}
oder ähnliches

-------

falls dir das ganze so mühsam ist wie es mir erscheint:
teste deine Datenbankanfragen lieber in einem kleinen Java-Programm, da dauert jeder Programmstart nur 2 sec..
 
in der while schleife weist du der Var wert1 bzw. wert2 jedesmal den Wert aus dem ResultSet zu. Und dann machst du nichts mehr damit.
Du musst die Werte auch in der Schleife ausgeben.
Ach ja..Exception Handling ist ne feine Sache..
- Exceptions nicht nur abfangen sondern auch irgendwie ausgeben
- Die Exception abfangen die geworfen wird (SQLException..) und nicht die Oberklasse nehmen.
 
@Gast Wann hast du denn programmieren gelernt? in den 50er Jahren wo man noch alle Variablen am Anfang einer Funktion deklariert hat?
 
KSG9|sebastian hat gesagt.:
in der while schleife weist du der Var wert1 bzw. wert2 jedesmal den Wert aus dem ResultSet zu. Und dann machst du nichts mehr damit.
Du musst die Werte auch in der Schleife ausgeben.
Ach ja..Exception Handling ist ne feine Sache..
- Exceptions nicht nur abfangen sondern auch irgendwie ausgeben
- Die Exception abfangen die geworfen wird (SQLException..) und nicht die Oberklasse nehmen.


Da hast du wohl recht! Hätte ich die Exception gleich ausgegeben, hätte ich den Fehler gleich gefunden.

Problem hat sich nun erledigt. Hab ihn durch Ausgabe der Exception behoben.

Danke für die Hilfe.
 
foobar hat gesagt.:
@Gast Wann hast du denn programmieren gelernt? in den 50er Jahren wo man noch alle Variablen am Anfang einer Funktion deklariert hat?

Naja, was soll ich sagen, so richtig programmiert hab ich noch nie. Aber als ich es gelernt habe, hat es immer geheißen, dass man die Variablen am Anfang definiert. Bisher habe ich da auch noch nichts gegenseitiges gehört.

Jeder so wie er am besten damit klar kommt!!!
 
Bisher habe ich da auch noch nichts gegenseitiges gehört.
Damit machst du dir das Leben unnötig schwer. Bei der Auswahl des Scopes gilt wie so oft: so viel wie nötig und so wenig wie möglich. D.h. deklariere deine Variablen immer erst dann, wenn du sie brauchst.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben