insérer une valeur de date dans oracle en utilisant java ne fonctionne pas


J'essaie d'insérer le format de date dans Oracle à partir de Java EE Eclipes. Je peux insérer une valeur nulle mais pas une valeur de date. La date s'imprime dans la console mais ne met pas à jour la base de données. Voici mes requêtes:

Insertion de la valeur de la date: (NE FONCTIONNE PAS) Sortie de la console pour uDate = 20 / Sep / 16

public void updateUnsubscribe(String empid) { 
  DateFormat df = new SimpleDateFormat("dd/MMM/yy");
  String uDate = df.format(new Date());
  String unSub = "udate MYDB set edate ='" + uDate + '" where emp = "empid"';
}

Insertion de la valeur NULL: (TRAVAIL) Sortie de la console pour uDate = null

public void updateSubscribe(String empid) { 
  Date toNull = null;
  String sub = "udate MYDB set edate ='" + toNull + '" where emp = "empid"';
}

Je ne reçois aucune erreur, du tout, le seul problème est que le champ de date n'est pas insertion de la date. Ce qui me manque? Ne suis-je pas en train de formater correctement mon champ de date.

Author: Gee, 2016-09-20

1 answers

Vous pouvez utiliser la fonction oracle to_date pour convertir varchar en valeur de date, pour votre exemple:

public void updateUnsubscribe(String empid) { 
  DateFormat df = new SimpleDateFormat("dd/MM/yy");
  String uDate = df.format(new Date());
  String unSub = "udate MYDB set edate =to_date('" + uDate + ', 'dd/MM/yyyy')" where emp = "empid"';
}

Mais plutôt que, il est préférable d'utiliser JDBC PreparedStatement pour cette tâche:

public void updateUnsubscribe(String empid) { 
  PreparedStatement ps = conn.prepareStatement("update MYDB set edate=? where emp=?");
  ps.setTimestamp(1, new java.sql.Timestamp(new Date()));
  ps.setString(2, empid);
  ps.executeUpdate();
}
 2
Author: mv200580, 2016-09-20 11:52:31