Datenbankabfrage

Tamizhan

Grünschnabel
Servus, ich weiß nicht, ob ich hier im richtigen Forum bin,
versuche mit JSP zu arbeiten, aber habe schon bei Java ein kleines Problem.

Und zwar versuche ich mittels:
Code:
    public String getVeranstaltungen(){
        String string2 = null;
        if(conn != null){
            Statement query;
            try {
                query = conn.createStatement();
                String sql;
                sql = "select * from veranstaltung";
                ResultSet result = query.executeQuery(sql);
                while(result.next()){
                    string2 = "<tr>";
                    string2 += "<td>"+result.getString("id")+"</td>";
                    string2 += "<td>"+result.getString("vName")+"</td>";
                    string2 += "<td>"+result.getString("beschreibung")+"</td>";
                    string2 += "<td><a href=\"vstgform.jsp?aktion=edit&id="+result.getString("id")+"\">edit</a></td>";
                    string2 += "<td><a href=\"vstg.jsp?pos=vstg&aktion=delete&id="+result.getString("id")+"\">delete</a></td>";
                    string2 += "</tr>";
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return string2;
    }

Eine mySql datenbank abfrage zu starten und diese in einer Tabelle darzustelllen.
Ich weiß nicht, was ich falsch gemacht habe, aber es wird mir nur der letzte Datensatz angezeigt und der Rest nicht .... das muss ja irgendwie am result.next() liegen, aber ich habe keine ahnung was es sein könnte.

Hoffe man kann mir da ein wenig helfen.
 
Hi und Willkommen bei tutorials.de,

Java:
string2 = "<tr>";
Das ist nur = nicht +=
dH. bei jedem Schleifendurchgang löscht du alles, was bisher im String ist,
und es bleibt nur <tr> übrig.
Das wird dann mit den Daten dieser Zeile ergänzt,
nur um von dern nächsten Zeile wieder aus der Variable entfernt zu werden.
Nur die letzte Zeile bleibt, ohne überschrieben zu werden.

Lösung:+= statt =
Und die Stringvariable am Anfang nicht auf null, sondern "" (leerer String) setzen.
 
Hallo sheel,
danke sehr für die so schnelle Antwort. Dass es nur so ein trivialer Fehler ist, der beim Tippen entstanden ist, sowas sieht glaub nicht derjenige, der das ganze zeugs selber geschrieben hat.
Und auch danke für den Hinweis mit null und leerer String ;)

Grüße
rathes

Kann man mir auch immer sagen, was hier falsch ist? Mir wird hier immer false ausgegeben.
Code:
    public Boolean delVeranstaltung(String id){
        boolean queryResult = false;
        int idNum = Integer.parseInt(id);
        if(conn != null){
            Statement query;
            try {
                query = conn.createStatement();
                String sql;
                sql = "DELETE FROM veranstaltung WHERE id=" + idNum;
                query.executeQuery(sql);
                queryResult = true;    
             } catch (SQLException e) {
                e.printStackTrace();
            }
        }        
        return queryResult;
    }

tabelle veranstaltung mit der Spalte id als int-Wert existieren, aber trotzdem ist queryResult bei mir am Ende immer false. Und der Datensatz wird auch nicht gelöscht :S
 
nee, Statement query; wird ja auch initialisiert ...
wenn ich dadrunter zum beispiel mein return auf true setze, dann wird auch true geantwortet ...
 
Ich dachte, der try-Teil wird nicht ausgeführt?

Und wenn man return true schreibt sollte sehr wahrscheinlich auch true zurückgegeben werden,
aber das hat mit dem Problem nichts zu tun.
 
Zwischen dem
Code:
if (conn != null)
und dem try{} steht ya
Code:
 Statement query;
und wenn ich darunter also noch vor dem try-Teil
Code:
queryResult = true;
setze.
Wird am Ende auch true zurückgegeben. Das bedeutet ja, dass conn != null ist, aber der try{} trotzdem nicht ausgeführt wird ...
 
Zurück