# Ist mein UPDATE fehlerhaft?



## Kaosu (25. Mrz 2009)

Huhu,

ich habe ein Problem mit meinem Prog. Dieses ist ein einfaches Applet welches auf eine datenbank zugreift. Läuft eigentlich auch alles Rund mit Delete und Select etc. Nun bin ich aber bei UPDATE angekommen: Zuerst wollte ich nur einen Wert ändern, aber wie ich gemerkt habe brauche ich noch eine zweiten Wert, der geändert werden muss...und zwar gleichzeitig. In meiner Datenbak habe ich natürlich einen Primärschlüssel und in meinem Applet habe ich folgendes realisiert: Ich drücke auf "Datenbank anzeigen" und es erscheint eine Liste mit den Inhalten (auch mit der ID, die der Primärschlüssel ist). Nun habe ich ein Textfeld wo man die gewünschte ID eingeben kann und darunter kann man den Namen eintragen. Nun wird die ID ausgelesen und nach dem dazugehörigen Eintrag in der Datenbank gesucht und dann dementsprechend geändert. Wie gesagt brauche ich nun einen 2ten Wert der mit geändert werden soll. Mein Problem nun ist, dass VCafé keinen Fehler oder sonstiges anzeigt und es trotzdem net macht >,<"
Ich poste einfach mal den Quellcode des Buttons:

[highlight=Java]
try{

             //vsichern.setVisible(false);
             //vloeschen.setVisible(false);
             ausgabe.setVisible(false);
             labelauto.setVisible(false);
             autoid.setVisible(false);
             labelid.setVisible(false);
             id.setVisible(false);
             labelname.setVisible(false);
             name.setVisible(false);
             schreiben.setVisible(false);
             speichern.setVisible(false);
             //csave.setVisible(false);
             cfilm.setVisible(false);
             //bestaetigung.setVisible(true);
             erfolgt.setVisible(true);
             loeschenbtn.setVisible(false);
             laufzeit.setVisible(false);
             laufzeitl.setVisible(false);

        String FNa = "";
        String FNl= "";
        FNa = name.getText();  // der erste Wert der geändert werden soll, in dem Fall der Name des Films
        FNl = laufzeit.getText(); // der zweite wert...in dem Fall die Laufzeit

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
        String url = "jdbcdbcB";
        System.out.println(url);
        Connection con = DriverManager.getConnection(url); 
        Statement stmt = con.createStatement();

           String FNr = id.getText();
           int zaehler = Integer.parseInt(FNr);


        String sql = "UPDATE Filme SET Filmname = '" + FNa + "', SET Laenge = '" + FNl + "' WHERE Film_ID = " +zaehler +"";
        //String sql = "UPDATE Filme SET Filmname = '" + FNa + "' WHERE Film_ID = " +zaehler +"";
        //String sql2 = "UPDATE Filme SET Laenge= '" + FNl + "' WHERE Film_ID = " +zaehler +"";
        System.out.println(sql);
        //System.out.println(sql2);
        ResultSet rst = stmt.executeQuery(sql);
        //ResultSet rst2 = stmt.executeQuery(sql2);
        rst.close();
        //rst2.close();
        stmt.close(); 
        con.close();
        } catch (Exception x)
        {

        }             
[/highlight]

Ich hoffe Ihr könnt mir helfen 
Bedanke mich schonmal im vorraus


----------



## max40 (25. Mrz 2009)

Versuch mal damit

 String sql = "UPDATE Filme SET Filmname = '" + FNa + "', Laenge = '" + FNl + "' WHERE Film_ID = " +zaehler +"";


----------



## Kaosu (25. Mrz 2009)

Ok, schlicht und einfach, kann ich nur DANKE sagen!

Darauf hätte ich auch selber kommen können.

Vor allem bedanke ich mich für die schnelle Antwort und keinen Flame darüber
was ich für ein newbie bin xD

so far...

MfG Kaosu


----------



## HoaX (25. Mrz 2009)

Und am Besten noch auf PreparedStatements umstellen, dass der Benutzer über die Textfelder keinen SQL-Code einschleusen kann.


----------

