Java, SQL und das Datum

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java, SQL und das Datum

    Hallo zusammen,
    diesmal gehts um Folgendes:
    Ich benötige eine Methode, die überprüft, ob ein Datum, das in Java eingegeben wird, vor einem Datum liegt, das schon in der Datenbank (Access) steht.
    Folgender Hintergrund:
    Am Ende soll ein Programm dastehen, mit dem man Autos mieten kann, wie bei einer Autovermietung. Die Überprüfung vom Datum ist notwendig, damit überprüft werden kann, ob das Auto, das jemand gerade mieten möchte, schon vermietet ist, also in der Datenbank schon als vermietet steht.
    Dies geschieht über mehrere Klassen:
    In der Klasse "LesenProg" steht folgende Methode:
    Code:

    Quellcode

    1. public ResultSet datumpruefen(int id){
    2. //AnmeldenZurueck anz = new AnmeldenZurueck();
    3. Logik l = null;
    4. EingabeDaten e = null;
    5. try {
    6. stmt = con.createStatement();
    7. rs = stmt.executeQuery("SELECT * FROM CarsToPerson WHERE"+e.id+"=id AND"+e.Entleihdatum+"<Rueckgabedatum;");
    8. return rs;
    9. }
    10. catch(SQLException se){
    11. System.out.println(se.toString());
    12. se.printStackTrace();
    13. }
    14. return null;
    15. }
    Alles anzeigen

    in der Klasse "InsertProg":

    Quellcode

    1. public void speichere(EingabeDaten e){
    2. try{
    3. stmt = con.createStatement();
    4. String s = "INSERT INTO CarsToPerson (ID, Name, Entleihdatum, Rueckgabedatum) " +
    5. "VALUES('"+e.id+"', '"+e.name+"', '"+e.Entleihdatum+"', '"+e.Rueckgabedatum+"')";
    6. stmt.executeUpdate(s);
    7. }
    8. catch(SQLException se){
    9. System.out.println(se.toString());
    10. se.printStackTrace();
    11. }
    12. }
    Alles anzeigen


    und in der Klasse "Logik":

    Quellcode

    1. //Step 4 erstellt 2 Datumsobjekte
    2. public void step4 ( String startday, String startmonth, String startyear, String endday, String endmonth, String endyear,
    3. int id, SimpleDateFormat DateFormat)
    4. {
    5. Date Entleihdatum = null, Rueckgabedatum = null;
    6. DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
    7. String Date1 = startday+"."+startmonth+"."+startyear;
    8. String Date2 = endday+"."+endmonth+"."+endyear;
    9. try {
    10. Entleihdatum = formatter.parse(Date1);
    11. Rueckgabedatum = formatter.parse(Date2);
    12. }
    13. catch(ParseException e) {
    14. e.printStackTrace();
    15. }
    16. java.sql.Date sqlDate1 = new java.sql.Date(Entleihdatum.getTime());
    17. java.sql.Date sqlDate2 = new java.sql.Date(Rueckgabedatum.getTime());
    18. //Entleihdatum.setDate(sqlDate1);
    19. //Entleihdatum.setDate(sqlDate2);
    20. //Rueckgabedatum =(Integer.parseInt(endyear), Integer.parseInt(endmonth),
    21. // Integer.parseInt(endday), Integer.parseInt(endhour), Integer.parseInt(endminute));
    22. InsertProg i = new InsertProg();
    23. LesenProg l = new LesenProg();
    24. try{
    25. rs = l.datumpruefen(id);
    26. //rs.next();
    27. if(rs.next ()) {
    28. e.setDates(Entleihdatum, Rueckgabedatum);
    29. e.setDates(new java.sql.Date(Entleihdatum.getTime()), new java.sql.Date(Rueckgabedatum.getTime()));
    30. i.speichere(e);
    31. System.out.println("nach speichern");
    32. }
    33. else{
    34. System.out.println(Entleihdatum+" "+Rueckgabedatum);
    35. }
    36. l.close();
    37. i.close();
    38. }
    39. catch (SQLException se){
    40. System.out.println(se.toString());
    41. se.printStackTrace();
    42. }
    Alles anzeigen




    Ich stehe hier vor dem Problem, dass nichts mehr in die Datenbank gespeichert wird, das Programm steigt in der Logikklasse irgendwo in der Gegend um rs.next aus, denn ich bekomme auch keinen System.out.print, den ich zum Test eingefügt habe. Sobald ich aber die komplette überprüfen-geschichte weglasse, klappts mitm speichern.

    Was mache ich da falsch?
    Nach oben
  • Also Eclipse gibt mir folgendes aus, sobald ich auf den Button klicke, der auslösen soll, dass alles in die DB geschrieben wird:

    Quellcode

    1. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    2. at Autoverleih.LesenProg.datumpruefen(LesenProg.java:82)
    3. at Autoverleih.Logik.step4(Logik.java:116)
    4. at Autoverleih.Zeitraum.actionPerformed(Zeitraum.java:209)
    5. at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    6. at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    7. at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    8. at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    9. at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    10. at java.awt.Component.processMouseEvent(Component.java:6038)
    11. at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
    12. at java.awt.Component.processEvent(Component.java:5803)
    13. at java.awt.Container.processEvent(Container.java:2058)
    14. at java.awt.Component.dispatchEventImpl(Component.java:4410)
    15. at java.awt.Container.dispatchEventImpl(Container.java:2116)
    16. at java.awt.Component.dispatchEvent(Component.java:4240)
    17. at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    18. at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    19. at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    20. at java.awt.Container.dispatchEventImpl(Container.java:2102)
    21. at java.awt.Window.dispatchEventImpl(Window.java:2429)
    22. at java.awt.Component.dispatchEvent(Component.java:4240)
    23. at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    24. at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    25. at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    26. at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    27. at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    28. at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    29. at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Alles anzeigen


    Beim debuggen bekomme ich für rs übrigens immer null angezeigt. Vielleicht bringt das ja auch weiter. Ich weiß allerdings nicht, wie sich das ändern lässt...