Daten gehen nicht in Datenbank

Elethier100

Mitglied
Hallo :)

Ich habe momentan ein kleines Problem und zwar kann ich keine Daten in meine Oracle Datenbank schreiben. Da kommt immer folgender Fehler:
Java:
Infert :ORA-01400: Einfügen von NULL in ("DVI302"."URLAUBSANTRAG"."URLAUBSBEGINN") nicht möglich

Ich gebe euch einfach sämtlichen Code für diese Klasse. Ihr habt da immer ein besseres Auge und könnt sagen, warum das nicht funktioniert. Eigentlich gebe ich in der GUI überall was ein und lasse nichts "NULL" :eek: Wäre super nett, wenn ihr da mal drüberschauen könntet. Verzweifel schon, weil ich den Fehler nicht finde.

Lg

View:

Java:
package View;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.PasswordAuthentication;
import javax.mail.internet.MimeMessage;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.text.html.parser.Parser;

import com.toedter.calendar.JDateChooser;

import Control.urlaubsantrag_controller;


public class urlaubsantrag_view extends JFrame implements ItemListener, ActionListener {

    private JPanel contentPane;
    private static JTextField txtMaNummer;
    private static JTextField txtVorname;
    private static JTextField txtNachname;
    private static JTextField txtTage;
    private JLabel lblUrlaubsantrag;
    private JLabel lblVorname;
    private JLabel lblNachname;
    private JLabel lblVon;
    private JLabel lblBis;
    static JDateChooser dateVon;
    static JDateChooser dateBis;
    private JLabel lblArtDesUrlaubs;
    private JLabel lblBemerkungen;
    private static JTextArea txtBemerkung;
    private JButton btnUrlaubBeantragen;
    private JLabel lblGrund;
    private JComboBox<String> cboGrund;
    private JRadioButton rdbtnSonderurlaub;
    private JButton btnAbbrechen;
    private JLabel lblTage;
    private JRadioButton rdbtnNormal;
    private JLabel lblBild;
    private JButton btnHilfe;


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    // LookAndFeel, damit das Programm plattformunabh�ngig arbeitet
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                try{
                    new urlaubsantrag_view();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }


    public urlaubsantrag_view() {
        starten();
        class Fenster extends WindowAdapter {
            public void windowClosing(WindowEvent e) {
            schliessen();
            }
            }
        addWindowListener(new Fenster());
    }
   
    private void starten(){
       
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 774, 584);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        Color c1 = new Color(229,249,248);
        contentPane.setBackground(c1);
        setLocationRelativeTo(null);
        setTitle("Urlaubsantrag");
        this.setResizable(false);
        setVisible(true);
       
        JLabel lblMitarbeiternummer = new JLabel("Mitarbeiternummer:");
        lblMitarbeiternummer.setBounds(30, 96, 134, 14);
        contentPane.add(lblMitarbeiternummer);
       
        lblUrlaubsantrag = new JLabel("Urlaubsantrag");
        lblUrlaubsantrag.setHorizontalAlignment(SwingConstants.CENTER);
        lblUrlaubsantrag.setFont(new Font("Tahoma", Font.PLAIN, 20));
        lblUrlaubsantrag.setBounds(0, 0, 768, 64);
        // Hintergrundfarbe �ndern
        Color c = new Color(0,155,187);
        lblUrlaubsantrag.setBackground(c);
        // Hintergrund durchsichtig machen, um Farbe sehen zu k�nnen
        lblUrlaubsantrag.setOpaque(true);
        contentPane.add(lblUrlaubsantrag);
       
        txtMaNummer = new JTextField();
        txtMaNummer.setBounds(174, 96, 109, 20);
        contentPane.add(txtMaNummer);
        txtMaNummer.setDocument(new Control.SetMaText(6));
        txtMaNummer.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if(!((Character.isDigit(c) ||
                        (c == KeyEvent.VK_BACK_SPACE) ||
                        (c == KeyEvent.VK_DELETE)))) {
                        e.consume();           
            }
            }
        });
        txtMaNummer.setColumns(10);
       
        lblVorname = new JLabel("Vorname:");
        lblVorname.setBounds(30, 134, 74, 14);
        contentPane.add(lblVorname);
       
        lblNachname = new JLabel("Nachname:");
        lblNachname.setBounds(30, 172, 74, 14);
        contentPane.add(lblNachname);
       
        txtVorname = new JTextField();
        txtVorname.setBounds(174, 134, 109, 20);
        contentPane.add(txtVorname);
        txtVorname.setColumns(10);
       
        txtNachname = new JTextField();
        txtNachname.setBounds(174, 172, 109, 20);
        contentPane.add(txtNachname);
        txtNachname.setColumns(10);
       
        lblVon = new JLabel("Von:");
        lblVon.setBounds(30, 345, 46, 14);
        contentPane.add(lblVon);
       
        dateVon = new JDateChooser();
        dateVon.setBounds(174, 342, 109, 20);
        contentPane.add(dateVon);
       
        lblBis = new JLabel("Bis:");
        lblBis.setBounds(30, 386, 46, 14);
        contentPane.add(lblBis);
       
        dateBis = new JDateChooser();
        dateBis.setBounds(174, 389, 109, 20);
        contentPane.add(dateBis);
       
        lblArtDesUrlaubs = new JLabel("Art des Urlaubs:");
        lblArtDesUrlaubs.setBounds(30, 220, 120, 14);
        contentPane.add(lblArtDesUrlaubs);
       
        lblBemerkungen = new JLabel("Bemerkungen:");
        lblBemerkungen.setBounds(376, 96, 99, 14);
        contentPane.add(lblBemerkungen);
       
        txtBemerkung = new JTextArea();
        txtBemerkung.setBounds(497, 101, 239, 72);
        txtMaNummer.setDocument(new Control.SetMaText(160));
        contentPane.add(txtBemerkung);
       
        btnUrlaubBeantragen = new JButton("Urlaub beantragen");
        btnUrlaubBeantragen.setBounds(30, 499, 154, 23);
        this.getContentPane().add(btnUrlaubBeantragen);
        btnUrlaubBeantragen.addActionListener(this);
       
        btnAbbrechen = new JButton("Abbrechen");
        btnAbbrechen.setBounds(211, 499, 109, 23);
        contentPane.add(btnAbbrechen);
        btnAbbrechen.addActionListener(this);
       
       
        lblTage = new JLabel("Tage:");
        lblTage.setBounds(30, 437, 46, 14);
        contentPane.add(lblTage);
       
        txtTage = new JTextField();
        txtTage.setBounds(174, 434, 109, 20);
        contentPane.add(txtTage);
//        differenz();
        txtTage.setColumns(10);
       
       
        rdbtnNormal = new JRadioButton("Normal");
        rdbtnNormal.setBounds(174, 218, 109, 18);
        rdbtnNormal.addItemListener(this);
        contentPane.add(rdbtnNormal);
       
        rdbtnSonderurlaub = new JRadioButton("Sonderurlaub");
        rdbtnSonderurlaub.setBounds(174, 258, 154, 23);
        contentPane.add(rdbtnSonderurlaub);
       
        // Radiobuttons gruppieren, damit man immer nur einen ausw�hlen kann
        ButtonGroup group= new ButtonGroup();
        group.add(rdbtnNormal);
        group.add(rdbtnSonderurlaub);
       
        lblGrund = new JLabel("Grund:");
        lblGrund.setBounds(30, 301, 46, 14);
        contentPane.add(lblGrund);
       
        cboGrund = new JComboBox<String>();
        cboGrund.setBounds(174, 298, 109, 20);
        cboGrund.addItem("Geburt");
        cboGrund.addItem("Hochzeit");
        cboGrund.addItem("Umzug");
        contentPane.add(cboGrund);
       
       
        lblBild = new JLabel("");
        lblBild.setBounds(395, 220, 251, 251);
        lblBild.setIcon(new ImageIcon(urlaubsantrag_view.class.getResource("/Formular.png")));
        contentPane.add(lblBild);
       
        btnHilfe = new JButton("?");
        btnHilfe.setBounds(721, 521, 37, 23);
        contentPane.add(btnHilfe);
        btnHilfe.addActionListener(this);
       

   
    }
   
    public  void senden(){
       
         

        // Empfänger E-Mail Adresse
          String to = "";

          // Absender E-Mail Adresse
          String from = "";

         
          // Daten des E-Mail Servers übergeben
          Properties props = new Properties();
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.host", "mx.freenet.de");
            props.put("mail.smtp.port", "587");
         

            // Verbindung mit dem Mail Server. Benutzername und Passwort übergeben
            
            Session session = Session.getInstance(props,
                 new javax.mail.Authenticator() {
                   protected PasswordAuthentication getPasswordAuthentication() {
                       return new PasswordAuthentication(name, pw);
                   }
                 });
            
          try{
             // Nachricht versenden
             MimeMessage message = new MimeMessage(session);
             
             message.setFrom(new InternetAddress(from));

             message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

             // Betreff
             message.setSubject("Urlaubsantrag");

             // Text
             message.setText("Hallo Herr Chef. Der Mitarbeiter " + " " + Model.urlaubsantrag_model.getTxtVorname() + " " + Model.urlaubsantrag_model.getTxtNachname() + " " + "möchte gerne vom " + dateVon.getDate().toString() + " " + "bis zum " + dateBis.getDate().toString() + " " + "Urlaub nehmen ");
            
             Transport.send(message);
             System.out.println("Sent message successfully....");
          }catch (MessagingException mex) {
             mex.printStackTrace();


          }
    }

   

   
    public void itemStateChanged(ItemEvent e){
        if(rdbtnNormal.isSelected())
        {
            cboGrund.disable();
       
        } else
           
        {
            cboGrund.enable();
       
        }
    }
   
    public void schliessen(){
        if(JOptionPane.showOptionDialog(null, "Willst du wirklich das Programm beenden?","Beenden",
        JOptionPane.YES_NO_OPTION,
        JOptionPane.QUESTION_MESSAGE, null,
        new String[]{"Ja", "Nein"}, "Nein") == JOptionPane.YES_OPTION){
          System.exit(0);
        }
      }
   
    public void differenz() {
   
//        Date d1 = dateVon.getDate();
//        Date d2 = dateBis.getDate();
//        long diff = d2.getTime() - d1.getTime();
//        long diffTage = diff / (24 * 60 * 60 * 1000);
//        String s = String.valueOf(diffTage);
//        txtTage.setText(s);
    }


   
   
    public void resetView(){
        this.txtVorname.setText("");
        this.txtNachname.setText("");
        this.txtBemerkung.setText("");
        this.txtTage.setText("");
        this.txtMaNummer.setText("");


    }
   
    public int getSonderurlaub() {
        if(rdbtnSonderurlaub.isSelected()) {
            return 1;
        } else {
            return 0;
        }
       
    }
   
    public String getDateAsString() {
           DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
           return formatter.format(new Date());
        }
   
    public void getStatus() {
       
    }
   
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()== btnAbbrechen) {
            dispose();
            System.exit(0);
        }
       
        if(e.getSource() == btnHilfe) {
            JOptionPane.showMessageDialog(null, "Bitte füllen Sie das Formular aus, um Ihren Urlaub zu beantragen!", "Hilfe", JOptionPane.INFORMATION_MESSAGE);
        }
       
        if(e.getSource() == btnUrlaubBeantragen) {
//            senden();
            urlaubsantrag_controller.urlaubsatragEinreichen(Model.urlaubsantrag_model.getTxtMaNummer(), Model.urlaubsantrag_model.getTxtTage(), Model.urlaubsantrag_model.getDateVon(), Model.urlaubsantrag_model.getDateBis(), "offen", 1, Model.urlaubsantrag_model.getTxtBemerkung());
        }
    }
   


   
}

Model:

Java:
package Model;

import java.util.Date;

import javax.swing.text.View;

import View.urlaubsantrag_view;



public class urlaubsantrag_model {
   
    private urlaubsantrag_view view;
   
    private static int txtMaNummer;
    private static  String txtVorname;
    private static String txtNachname;
    private static int txtTage;
    private static java.sql.Date dateVon;
    private static java.sql.Date dateBis;
    private static String txtBemerkung;
    private static int rdbtnSonderurlaub;
   
   
    public urlaubsantrag_model(int txtMaNummer, String txtVorname, String txtNachname, int txtTage, java.sql.Date dateVon, java.sql.Date dateBis, String txtBemerkung, boolean rdbtnSonderurlaub){
        this.view = new urlaubsantrag_view();
       
        this.txtMaNummer = txtMaNummer;
        this.txtVorname = txtVorname;
        this.txtNachname = txtNachname;
        this.txtTage = txtTage;
        this.dateBis = dateBis;
        this.dateVon = dateVon;
        this.txtBemerkung = txtBemerkung;
       
    }


    public urlaubsantrag_view getView() {
        return view;
    }


    public void setView(urlaubsantrag_view view) {
        this.view = view;
    }


    public static int getTxtMaNummer() {
        return txtMaNummer;
    }


    public void setTxtMaNummer(int txtMaNummer) {
        this.txtMaNummer = txtMaNummer;
    }


    public static  String getTxtVorname() {
        return txtVorname;
    }


    public void setTxtVorname(String txtVorname) {
        this.txtVorname = txtVorname;
    }


    public static  String getTxtNachname() {
        return txtNachname;
    }


    public void setTxtNachname(String txtNachname) {
        this.txtNachname = txtNachname;
    }


    public static int getTxtTage() {
        return txtTage;
    }


    public void setTxtTage(int txtTage) {
        this.txtTage = txtTage;
    }


    public static java.sql.Date getDateVon() {
        return dateVon;
    }


    public void setDateVon(java.sql.Date dateVon) {
        this.dateVon = dateVon;
    }


    public static java.sql.Date getDateBis() {
        return dateBis;
    }


    public void setDateBis(java.sql.Date dateBis) {
        this.dateBis = dateBis;
    }


    public static String getTxtBemerkung() {
        return txtBemerkung;
    }


    public void setTxtBemerkung(String txtBemerkung) {
        this.txtBemerkung = txtBemerkung;
    }



    @Override
    public String toString() {
        return "urlaubsantrag_model [view=" + view + ", txtMaNummer=" + txtMaNummer + ", txtVorname=" + txtVorname
                + ", txtNachname=" + txtNachname + ", txtTage=" + txtTage + ", dateVon=" + dateVon + ", dateBis="
                + dateBis + ", txtBemerkung=" + txtBemerkung + ", rdbtnSonderurlaub=" + rdbtnSonderurlaub
                + ", getView()=" + getView() + ", getTxtMaNummer()=" + getTxtMaNummer() + ", getTxtVorname()="
                + getTxtVorname() + ", getTxtNachname()=" + getTxtNachname() + ", getTxtTage()=" + getTxtTage()
                + ", getDateVon()=" + getDateVon() + ", getDateBis()=" + getDateBis() + ", getTxtBemerkung()="
                + getTxtBemerkung() + ", isRdbtnSonderurlaub()=" + ", getClass()=" + getClass()
                + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]";
    }



}

Controller:

Java:
package Control;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

import javax.swing.JOptionPane;

import com.toedter.calendar.JDateChooser;

import Model.urlaubsantrag_model;
import View.urlaubsantrag_view;
import Control.db_connection;

public class urlaubsantrag_controller {
   
   
    public boolean tabelleUrlaubsantragErstellen(){
       
        Connection con = db_connection.getDBCon();
        Statement stmt = null;
          String sql = "CREATE TABLE URLAUBSANTRAG"
                    + "(URLANTRNR number(8) NOT NULL constraint pk_URLANTRNR primary key,"
                    + "URLAUBSDAUER  number(2) NOT NULL,"
                    + "URLAUBSBEGINN date NOT NULL,"            
                    + "URLAUBSENDE date NOT NULL,"
                    + "URLAUBSSTATUS VARCHAR2(2) NOT NULL,"
                    + "SONDERURLAUB number(1) NOT NULL,"
                    + "BEMERKUNG VARCHAR(160) )";
          try{
              stmt = con.createStatement();
              stmt.execute(sql);
              con.commit();
              JOptionPane.showMessageDialog(null, "Daten erfolgreich in Datenbank geschrieben", "Erfolg", JOptionPane.INFORMATION_MESSAGE);
              stmt.close();
              return true;
          } catch (SQLException sqlerr) {
              sqlerr.getErrorCode();
              System.out.println("Insert :" + sqlerr.getMessage());
              db_connection.closeDBCon();
              return false;
          }
    }
   
    // Urlaubsatrag einreichen
    public static void urlaubsatragEinreichen(int getTxtMaNummer, int getTxtTage, java.sql.Date getDateVon,  java.sql.Date getDateBis, String Status, int Sonderurlaub, String getTxtBemerkung) {
        try {       
            Connection con = db_connection.getDBCon();
            String query = "insert into urlaubsantrag (urlantrnr, urlaubsdauer, urlaubsbeginn, urlaubsende, urlaubsstatus, sondurlaub, bemerkung)" + " values (?,?,?,?,?,?,?)";
            PreparedStatement pstmt = con.prepareStatement(query);
            pstmt.setInt(1, getTxtMaNummer);
            pstmt.setInt(2, getTxtTage);
            pstmt.setDate(3, getDateVon);
            pstmt.setDate(4, getDateBis);
            pstmt.setString(5, Status);
            pstmt.setInt(6, Sonderurlaub);
            pstmt.setString(7, getTxtBemerkung);
            pstmt.execute();
            con.commit();
            JOptionPane.showMessageDialog(null, "Daten wurden erfolgreich in die Datenbank geschrieben", "Erfolg", JOptionPane.INFORMATION_MESSAGE);
            pstmt.close();
            db_connection.closeDBCon();
        } catch (SQLException e) {
            if(e.getErrorCode() == 1) {
                JOptionPane.showMessageDialog(null, "Daten konnten nicht in die Datenbank geschrieben werden", "Fehler", JOptionPane.INFORMATION_MESSAGE);
               
            }
            System.out.println("Infert :" + e.getMessage());
        }
    }
   
    public static void urlaubstageUpdaten(int i)  {
        try{
           
       
        Connection con = db_connection.getDBCon();
        Statement stmt = con.createStatement();
        String sql = "UPDATE INTO URLAUBSKONTOVALUES('"+i+"')";
        stmt.executeQuery(sql);
        con.commit();
        JOptionPane.showMessageDialog(null, "Daten wurden erfolgreich in die Datenbank geschrieben", "Erfolg", JOptionPane.INFORMATION_MESSAGE);;
        stmt.close();
        db_connection.getDBCon().close();
    } catch (SQLException e) {
        if(e.getErrorCode() == 1) {
            JOptionPane.showMessageDialog(null, "Daten konnten nicht in die Datenbank geschrieben werden", "Fehler", JOptionPane.INFORMATION_MESSAGE);
           
        }
        System.out.println("Infert :" + e.getMessage());
    }
}

   

}
 

Thallius

Top Contributor
Nunja ohne mir den Code anzusehen würde ich mal sagen du gibst der Datenbank doch NULL für diese Felder. Sonst würde es ja nicht meckern. Also ist debuggen angesagt. Wie wäre es z.B. mit einem einfachen System.out.println() für die entsprechenden Werte vorm Insert? Dann wärst du schon einmal einne Schritt weiter....
 

Elethier100

Mitglied
Hmm. Habe jetzt vor dem Insert ein SysOut() gemacht mit den Werten und egal was ich eingebe, es wird "0" in die Konsole ausgegeben :eek:

Habe das Gefühl, dass die Getter und Setter Methoden nicht die Werte aus meinen Feldern der View übernehmen. Weiß aber gerade echt nicht warum :/ Kann mir bitte jemand helfen, was ich ändern muss? :(
 
Zuletzt bearbeitet:

Elethier100

Mitglied
Habe das mit den Getter und Setter Methoden nun gelöst. Jetzt habe ich aber folgendes Problem, dass ich die beiden Daten nicht in die Datenbank schreiben kann. In der Datenbank sind die vom Typ "Date" deklariert. Wenn ich die Daten in der get Methode nur als "Date" deklariere zeigt er mir an, dass ich sie als "Java.sql.Date" deklarieren soll. Und jetzt kommt immer der Fehler:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
 

Elethier100

Mitglied
Habe ich ja gemacht. Aber genau dann kommt der von mir o. g. Fehler

Java:
public static void urlaubsatragEinreichen(String getMAID, String getTage, Date getDateVon,  Date dateBis, String Status, int Sonderurlaub, String getBemerkung) {
        try {       
            Connection con = db_connection.getDBCon();
            String query = "insert into urlaubsantrag (urlantrnr, urlaubsdauer, urlaubsbeginn, urlaubsende, urlaubsstatus, sondurlaub, bemerkung)" + " values (?,?,?,?,?,?,?)";
            java.sql.PreparedStatement pstmt = con.prepareStatement(query);
            pstmt.setString(1, getMAID);
            pstmt.setString(2, getTage);
            pstmt.setDate(3, getDateVon);
            pstmt.setDate(4, dateBis);
            pstmt.setString(5, Status);
            pstmt.setInt(6, Sonderurlaub);
            pstmt.setString(7, getBemerkung);
            pstmt.execute();
            con.commit();
            JOptionPane.showMessageDialog(null, "Daten wurden erfolgreich in die Datenbank geschrieben", "Erfolg", JOptionPane.INFORMATION_MESSAGE);
            pstmt.close();
            db_connection.closeDBCon();
        } catch (SQLException e) {
            if(e.getErrorCode() == 1) {
                JOptionPane.showMessageDialog(null, "Daten konnten nicht in die Datenbank geschrieben werden", "Fehler", JOptionPane.INFORMATION_MESSAGE);
               
            }
            System.out.println("Infert :" + e.getMessage());
        }
    }


Java:
public java.sql.Date getDateVon() {
        return (java.sql.Date) dateVon.getDate();
    }

    public void setDateVon() {
        this.dateVon = dateVon;
    }
 

Harry Kane

Top Contributor
java.sql.Date erweitert java.util.Date, d. h. jedes java.sql.Date ist auch ein java.util.Date, aber nicht umgekehrt.Glücklicherweise kann ein java.sql.Date sehr einfach aus einem java.util.Date erzeugt werden. Du musst einfach vor dem aufrufen von urlaubsatragEinreichen die Instanzen von java.util.Date zum Erzeugen von Instanzen von java.sql.Date verwenden.
Abgesehen davon: unübersichtliches Gemisch aus statischen und Instanzvariablen, und Benennung von packages, Klassen und Variablen folgt nicht den Java-Konventionen.
 

Harry Kane

Top Contributor
Habe das mit den Getter und Setter Methoden nun gelöst.
Ich habe gerade versucht, den Ablauf deines Codes nachzuvollziehen.
urlaubsantrag_controller.urlaubsatragEinreichen wird aufgerufen von urlaubsantrag_view.actionPerformed().
Dabei wird aber nur auf die statischen Variablen von urlaubsantrag_model zurückgegriffen. Stellt sich die Frage wo die gesetzt werden.
Im geposteten Code werden die statischen Variablen von urlaubsantrag_model nur gesetzt, wenn der Konstruktor von urlaubsantrag_model aufgerufen wird, was ein sehr fehleranfälliges Konstrukt ist.
Es ist in dem von dir geposteten Code nicht zu erkennen, wie Eingaben in urlaubsantrag_view irgendeine Änderung in urlaubsantrag_model bewirken sollten. Nur die beiden Zeilen der Form txtMaNummer.setDocument(new Control.SetMaText(6)) könnten mit ein bisschen Magie in der nicht geposteten Klasse SetMaText sowas bewirken.
Ich weiss zwar nicht, wie du das Problem mit ein "Getter und Setter Methoden gelöst" hast, aber ich kann mir nicht vorstellen, dass diese Lösung auch nur halbwegs schön ist.
 

Elethier100

Mitglied
Ich habe gerade versucht, den Ablauf deines Codes nachzuvollziehen.
urlaubsantrag_controller.urlaubsatragEinreichen wird aufgerufen von urlaubsantrag_view.actionPerformed().
Dabei wird aber nur auf die statischen Variablen von urlaubsantrag_model zurückgegriffen. Stellt sich die Frage wo die gesetzt werden.
Im geposteten Code werden die statischen Variablen von urlaubsantrag_model nur gesetzt, wenn der Konstruktor von urlaubsantrag_model aufgerufen wird, was ein sehr fehleranfälliges Konstrukt ist.
Es ist in dem von dir geposteten Code nicht zu erkennen, wie Eingaben in urlaubsantrag_view irgendeine Änderung in urlaubsantrag_model bewirken sollten. Nur die beiden Zeilen der Form txtMaNummer.setDocument(new Control.SetMaText(6)) könnten mit ein bisschen Magie in der nicht geposteten Klasse SetMaText sowas bewirken.
Ich weiss zwar nicht, wie du das Problem mit ein "Getter und Setter Methoden gelöst" hast, aber ich kann mir nicht vorstellen, dass diese Lösung auch nur halbwegs schön ist.

Habe das Model jetzt erst einmal weggelassen und die Getter / Setter mit in die View gepackt in dieser Form:
Java:
public String getMAID() {
        return txtMaNummer.getText();
    }

    public void setMAID() {
        this.txtMaNummer = txtMaNummer;
    }
Das Programm muss erst einmal funktionieren, das ist die Hauptsache. Schönheit ist erst mal alles Nebensache und ich habe auch absolut 0 Plan.

Und Dankeschön. Ich werde das mit deinem o. g. Tipp mal probieren, ob es dann klappt :)
 

Thallius

Top Contributor
Wenn die Software funktionieren soll, dann würde es eventuell Sinn machen sich erstmal fundiertes Grundlagenwissen anzueignen bevor du anfängst mit UI und Datenbanken rumzubasteln. Solange du nicht verstehst wie MVC richtig eingesetzt und angewendet wird macht es auch keinen Sinn es einzusetzen und solange du einfach irgendwelche Varibalen auf Static setzt weil du nicht weist wie du sie sonst von anderen Insanzen aus ansprechen kannst, solange solltest du wirklich erstmal 10 Schritte zurück gehen.

Nichts für ungut

Claus
 

Elethier100

Mitglied
Wenn die Software funktionieren soll, dann würde es eventuell Sinn machen sich erstmal fundiertes Grundlagenwissen anzueignen bevor du anfängst mit UI und Datenbanken rumzubasteln. Solange du nicht verstehst wie MVC richtig eingesetzt und angewendet wird macht es auch keinen Sinn es einzusetzen und solange du einfach irgendwelche Varibalen auf Static setzt weil du nicht weist wie du sie sonst von anderen Insanzen aus ansprechen kannst, solange solltest du wirklich erstmal 10 Schritte zurück gehen.

Nichts für ungut

Claus

Ich weiß und verstehe dich auch......aber in der Uni hat man nur begrenzt Zeit um das zu lernen und Programmieren ist etwas, was ich einfach nicht verstehe und mir so ziemlich 0 Spaß macht :D Deswegen bin ich einfach froh, wenn ich es überhaupt erst einmal zum Laufen bekomme.

Würde ich das jetzt privat hobbymäßig etc. machen, dann würde ich mir auch viel mehr Zeit nehmen um alles zu verstehen, was was macht und dadurch dann auch etwas "schöner" coden =)
 

mrBrown

Super-Moderator
Mitarbeiter
Irgendwas einfach so hinklatschen ohne jegliches Verständnis ist allerdings erst recht nicht Ziel des Studium - und je nach Prüfer durchaus Grund genug zum Durchfallen ;)
 

Elethier100

Mitglied
Warum studiert man etwas dessen essentiellen grundlegenden Dinge einen überhaupt nicht interessieren?

Programmieren ist nur ein kleines Nebenfach von vielen anderen. Mein Hauptgebiet ist Webdesign, Wordpress, html, css etc, was ich WESENTLICH besser kann :D

Aber durch Java muss man einfach auch durch.....egal was man studiert, irgendwas ist immer dabei, was einen nicht interessiert ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
W (XML/XSL) Daten aus Eclipse in eine Klasse Laden. Java Basics - Anfänger-Themen 1
I Daten speichern ohne Datenbank Java Basics - Anfänger-Themen 20
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
IngoF GUI mit Thread Daten austauschen. Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
fLooojava Daten im selben Netzwerk an IP Java Basics - Anfänger-Themen 1
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
P Daten auslesen und in CSV speichern Java Basics - Anfänger-Themen 6
J Daten aus zweiter Klasse importieren Java Basics - Anfänger-Themen 33
C Daten speichern und laden Java Basics - Anfänger-Themen 6
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6
A daten vom 1d array in 2d matrix speichern Java Basics - Anfänger-Themen 3
R csv-Datei auslesen und ausgelesene Daten in neue csv-Datei speichern Java Basics - Anfänger-Themen 2
Z Differenz zwischen 2 Daten berechnen, ohne importiere Funktionen! Java Basics - Anfänger-Themen 10
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben