set Integer bzw. set null mit SQL DB

maGG

Bekanntes Mitglied
Hallo ihr Lieben, folgender Code:
Java:
  private void jButtonSaveA2ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        try{
            String sql = "INSERT INTO Filialen_Ausland (id,LABEL,STRASZE,PLZ_ORT,ORT,TEL_LAND,TEL_ANFANG_INT,"
            + "TEL_ANFANG_TXT,TEL_ENDE_DEFAULT,FAX_ANFANG_TXT,FAX_ENDE_TXT) "
            + "VALUES(?,?,?,?,?,?,?,?,?,?,?)";
            pst = conn.prepareStatement(sql);
            pst.setInt(1,Integer.parseInt(jTextFieldA1.getText()));
            pst.setString(2,jTextFieldA2.getText());
            pst.setString(3,jTextFieldA3.getText());
            pst.setString(4,jTextFieldA4.getText());
            pst.setString(5,jTextFieldA5.getText());
            pst.setInt(6,Integer.parseInt(jTextFieldA6.getText()));
            pst.setInt(7,Integer.parseInt(jTextFieldA7.getText()));
            pst.setString(8,jTextFieldA8.getText());
            pst.setInt(9,Integer.parseInt(jTextFieldA9.getText()));
            pst.setString(10,jTextFieldA10.getText());
            pst.setString(11,jTextFieldA11.getText());
            pst.execute();
            Update_Table_Filialen_Ausland();
            JOptionPane.showMessageDialog(null, "Filiale hinzugefügt");
            try{
                //rs.close();
                pst.close();
                conn.close();
            }catch(SQLException e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e);
            }
        }catch(Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e);
        }
    }
Problem: wenn eines der Textfelder leer ist funktioniert das Ganze mit setInt nicht, weil setInt zwei int-Werte setzt und int nicht null werden kann oder?
Ich bräuchte also den Datentyp Integer...

wie könnte ich dieses Problem lösen? Habt ihr ein Tipp für mich, was ich machen könnte?

Vielen Dank!
 
Hi,

Kann man das Feld nicht mit einer "0" initialisieren? Bin jetzt leider auch nur blutiger Anfänger. Kann man den Wert den du einliest evtl. mi 0 addieren?
 
Also entweder fügst du eine ordentliche Eingabeüberprüfung durch und lässt gar nicht erst zu, dass das Feld leer bleibt oder du musst eben den Wert per default auf 0 (oder was auch immer) setzen.
 
Hmm leider kann ich den Wert für TEL_ENDE_DEFAULT nicht 0 werden lassen. Denn in meinen verarbeitenden Methoden würde die Telefonnummer dann eine 0 angehängt bekommen, wo dann gar keine hin soll.

Ich hab also Standorte, bei denen die Telefonnummer eine Zusatznummer am Ende hat, z.B. 012345678-9 oder eben ohne: 012345678, in diesem Fall ist die Spalte TEL_ENDE_DEFAULT null. Also muss ich irgendeine andere Lösung finden, mir fällt jedoch gerade keine ein.

Habt ihr Ideen?
 
habs jetzt so gelöst ...
Java:
        if(jTextFieldA1.getText().equals("") || jTextFieldA2.getText().equals("") || jTextFieldA3.getText().equals("") ||
                jTextFieldA4.getText().equals("") || jTextFieldA5.getText().equals("") || jTextFieldA6.getText().equals("") ||
                jTextFieldA7.getText().equals("") || jTextFieldA8.getText().equals("") || jTextFieldA10.getText().equals("")){
            JOptionPane.showMessageDialog(null, "Fehler: Bitte notwendige Parameter setzen");
        }else{     
        try{
            String sql = "INSERT INTO Filialen_Ausland (id,LABEL,STRASZE,PLZ_ORT,ORT,TEL_LAND,TEL_ANFANG_INT,"
            + "TEL_ANFANG_TXT,TEL_ENDE_DEFAULT,FAX_ANFANG_TXT,FAX_ENDE_TXT) "
            + "VALUES(?,?,?,?,?,?,?,?,?,?,?)";
            pst = conn.prepareStatement(sql);
            pst.setInt(1,Integer.parseInt(jTextFieldA1.getText()));
            pst.setString(2,jTextFieldA2.getText());
            pst.setString(3,jTextFieldA3.getText());
            pst.setString(4,jTextFieldA4.getText());
            pst.setString(5,jTextFieldA5.getText());
            pst.setInt(6,Integer.parseInt(jTextFieldA6.getText()));
            pst.setInt(7,Integer.parseInt(jTextFieldA7.getText()));
            pst.setString(8,jTextFieldA8.getText());
            if(jTextFieldA9.getText().equals("")){    
                pst.setObject(9, null);
            }else{
                pst.setInt(9,Integer.parseInt(jTextFieldA9.getText()));
            }
            pst.setString(10,jTextFieldA10.getText());
            if(jTextFieldA11.getText().equals("")){
                pst.setObject(11, null);
            }else{
                pst.setString(11,jTextFieldA11.getText());
            }
            pst.execute();
            Update_Table_Filialen_Ausland();
            JOptionPane.showMessageDialog(null, "Filiale hinzugefügt");
            try{
                //rs.close();
                pst.close();
                //conn.close();
            }catch(SQLException e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e);
            }
        }catch(Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e);
        }
        }
    }

Allerdings hab ich bei der Update Funktion jetzt auch ein Problem:

Java:
    private void jButtonUpdateA2ActionPerformed(java.awt.event.ActionEvent evt) {                                               
        try{
            Integer value1 = Integer.parseInt(jTextFieldA1.getText());
            String value2 = jTextFieldA2.getText();
            String value3 = jTextFieldA3.getText();
            String value4 = jTextFieldA4.getText();
            String value5 = jTextFieldA5.getText();
            Integer value6 = Integer.parseInt(jTextFieldA6.getText());
            Integer value7 = Integer.parseInt(jTextFieldA7.getText());
            String value8 = jTextFieldA8.getText();
            Integer value9;
            if(jTextFieldA9.getText().equals("")){    
                value9 = null; //hier läuft etwas schief
            }else{
                value9 = Integer.parseInt(jTextFieldA9.getText());
            }
            String value10 = jTextFieldA10.getText();
            String value11;
            if(jTextFieldA11.getText().equals("")){    
                value11 = "";
            }else{
                value11 = jTextFieldA11.getText();
            }
           
            String sql = "UPDATE Filialen_Ausland SET id='" + value1 + "', LABEL='" + value2 +
            "', STRASZE='" + value3 + "', PLZ_ORT='" + value4 + "', ORT='" + value5 +
            "', TEL_LAND='" + value6 + "', TEL_ANFANG_INT='" + value7 + "', TEL_ANFANG_TXT='" + value8 +
            "', TEL_ENDE_DEFAULT='" + value9 + "', FAX_ANFANG_TXT='" + value10 + "', FAX_ENDE_TXT='" + value11 +
            "' WHERE id='" + value1+"' ";
            pst = conn.prepareStatement(sql);
            pst.execute();
            Update_Table_Filialen_Ausland(); //aktualisiert jTable nach Editieren
            JOptionPane.showMessageDialog(null, "Datenbank aktualisiert");
            try{
                pst.close();
            }catch(Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e);
            }
        }catch(Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e);
        }
    }

Klappt alles bisher perfekt, allerdings für value9 bzw. TEL_ENDE_DEFAULT wird null in der jTable als String ausgeschrieben, anstelle das die Zelle leer bleibt pfffffff stehe auf dem Schlauch...

Ideen? 🙂
 
Java:
    private void jButtonUpdateA2ActionPerformed(java.awt.event.ActionEvent evt) {                                               
        try{          
            String sql = "UPDATE Filialen_Ausland SET id=?, LABEL=?, STRASZE=?, PLZ_ORT=?, ORT,TEL_LAND=?, TEL_ANFANG_INT=?,"
            + " TEL_ANFANG_TXT=?, TEL_ENDE_DEFAULT=?, FAX_ANFANG_TXT=?, FAX_ENDE_TXT=? WHERE id=?";
           
            pst = conn.prepareStatement(sql);
            pst.setInt(1,Integer.parseInt(jTextFieldA1.getText()));
            pst.setString(2,jTextFieldA2.getText());
            pst.setString(3,jTextFieldA3.getText());
            pst.setString(4,jTextFieldA4.getText());
            pst.setString(5,jTextFieldA5.getText());
            pst.setInt(6,Integer.parseInt(jTextFieldA6.getText()));
            pst.setInt(7,Integer.parseInt(jTextFieldA7.getText()));
            pst.setString(8,jTextFieldA8.getText());
            if(jTextFieldA9.getText().equals("")){    
                pst.setObject(9, null);
            }else{
                pst.setInt(9,Integer.parseInt(jTextFieldA9.getText()));
            }
            pst.setString(10,jTextFieldA10.getText());
            if(jTextFieldA11.getText().equals("")){
                pst.setObject(11, null);
            }else{
                pst.setString(11,jTextFieldA11.getText());
            }
            pst.setInt(12,Integer.parseInt(jTextFieldA1.getText()));
            pst.executeUpdate();
            Update_Table_Filialen_Ausland();
            JOptionPane.showMessageDialog(null, "Filiale aktualisiert");
        }catch(Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e);
        }finally{
            try{
                if (pst != null) {
                    pst.close();
                }
            }catch(Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e);
            }
            }
    }
An meinem SQL Code müsste irgendetwas falsch sein (er gibt mir nen Syntax Error aus), weiß aber nicht was ich falsch gemacht hab 🙁
 

Neue Themen


Zurück
Oben