Brauche hilfe bei Delete mit Datum!

  • Themenstarter Themenstarter Designer2k5
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

Designer2k5

Gast
HI Leute!

Man suche und suche und finde nichts, ich hoffe ihr könnt mir helfen!!

Also folgendes Problem. Ich habe ein Delete das hier:

Code:
String call = "DELETE FROM Zeit_Buchungen" +
                   " WHERE Projektschluessel = "+Integer.parseInt(buchung.get(0).toString()) +
                   " AND Mitarbeiternummer = "+Integer.parseInt(buchung.get(1).toString()) +
                   " AND Datum = " + "\'" + buchung.get(2).toString()+ "\'";


Also ich habe das Problem das er das Datum nicht annimmt! Also ohne datum geht das ganze, aber mit nein. Hab versucht anhand von ' ' es einzulesen, aber er will mit oder ohne nicht. das Format ist 00.00.0000 auch in der Datenbank. könnt ihr mir bitte helfen danke!!


Greetz Designer2k5

L-ectron-X hat Code-Tags gesetzt.
Verschoben nach JDBC
 
Verwende PreparedStatement, dann brauchst Du Dich um die
genau Syntax der Datumseinträge nicht zu kümmern.
z.B.
Code:
PreparedStatement ps = connection.prepareStatement(
  "DELETE FROM Zeit_Buchungen "
 +"WHERE Projektschluessel = ? "
 +"  AND Mitarbeiternummer = ? "
 +"  AND Datum = ?"
);
ps.setInt (1, ((Integer)buchung.get(0)).intValue());
ps.setInt (2, ((Integer)buchung.get(1)).intValue());
ps.setTimestamp(3, new java.sql.Timestamp(((java.util.Date)buchung.get(2)).getTime()));
oder
ps.setDate(3, new java.sql.Date(((java.util.Date)buchung.get(2)).getTime()));
 
Noch etwas. Vergesse das PreparedStatement nicht zu schliessen.
Allgemein kann der Aufbau der Methode wir folgt aussehen:
Code:
Connection connection = ...;
PreparedStatement ps = null;

try {
  ps = connection.prepareStatement(...);
  ...
}
catch(SQLException e) {
  Fehlerursache protokollieren + Fehlerbehandlung
}
finally {
  // PreparedStatement vor der Connection schliessen
  try { 
    if(ps != null) 
      ps.close(); 
  } 
  catch(SQLException e) { 
    Fehlerursache protokollieren 
  }

  // Connection schliessen bzw. in ConnectionPool freigeben
  try { 
    if(connection != null) 
      connection.close(); 
  } 
  catch(SQLException e) { 
    Fehlerursache protokollieren 
  }
}
Die zwei try-catch-Blöcke in finally sind mit Absicht getrennt.
Wenn das Schliessen des PreparedStatement aus irgendeinem verrückten
Grund scheitert, dann soll die Connection trotzdem freigegeben werden.
 
Falls du es unbedingt mit nem normalen Statement machen willst:

1.) Verwende StringBuffer, ist wesentlich schneller
2.) Lass dir mal den String ausgeben ( System.out.println(call) )
und poste ihn
 
welche db?

YYYY-MM-DD

oder

YYYY-MM-DD hh:mm:ss

ist da ziemlich verbreitet als "literales" Datumsformat
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben