Hallo
Ich habe momentan ein kleines Problem und zwar kann ich keine Daten in meine Oracle Datenbank schreiben. Da kommt immer folgender Fehler:
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" Wäre super nett, wenn ihr da mal drüberschauen könntet. Verzweifel schon, weil ich den Fehler nicht finde.
Lg
View:
Model:
Controller:
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" 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());
}
}
}