2010-05-29 7 views
2

J'utilise une base de données dans mon projet Java et je souhaite y stocker la date. Les 5ème et 6ème paramètres sont Date Object. J'ai utilisé la solution ci-dessous, mais j'ai des erreurs dans les lignes indiquées:Stocker l'objet de date dans la base de données sqlite

PreparedStatement creerFilm = connecteur.getConnexion().prepareStatement(
     "INSERT INTO FILM (ID, REF, NOM, DISTRIBUTEUR, DATEDEBUT, DATEFIN) "+ 
     "VALUES (?, ?, ?, ?, ?, ?)"); 
creerFilm.setInt(1, getId()); 
creerFilm.setString(2, getReference()); 
creerFilm.setString(3, getNomFilm()); 
creerFilm.setString(4, getDistributeur()); 
// These next two lines 
creerFilm.setDate(5, new Date (getDateDebut().getDate())); 
creerFilm.setDate(6, new Date (getDateFin().getDate())); 
// The above two lines 
creerFilm.executeUpdate(); 
creerFilm.close(); 

Pouvez-vous m'aider à résoudre ce problème?

Merci

+0

Je pensais que SQLite ne peut stocker du texte , REEL ou INTEGER pour les dates et les heures? –

Répondre

6

je ne peux pas vraiment dire à partir de votre code, mais vous devez utiliser java.sql.Date, pas java.util.Date.

Voici comment convertir d'une instance de date d'utilité à une instance de date SQL:

java.sql.Date date = new java.sql.Date(utilDate.getTime()); 
+1

Merci pour votre réponse. J'ai utilisé la solution que vous m'avez indiquée et je n'ai pas d'erreur maintenant. Cependant, je ne sais pas quel format de date je devrais utiliser pour le stocker correctement dans la base de données. Actuellement, j'utilise une chaîne dans le constructeur qui devrait avoir ce format "jj-MM-aaaa", après quoi j'utilise une fonction pour le convertir en SimpleDateFormat. Quand j'utilise toString() tout fonctionne bien mais quand je le stocke dans la base de données je reçois quelque chose comme ça dans le champ "1287525600000" Pouvez-vous me dire s'il vous plaît où est le problème exactement? – bnabilos

+0

java.sql.Date n'a pas de constructeur de chaîne. Le constructeur java.util.Date String est déprécié. java.text.DateFormat a une méthode d'analyse qui fonctionne avec les dates de la chaîne au format 12 janvier 1952 ou 12 janvier 1952. Si vous avez java.text.SimpleDateFormat, vous devez l'analyser pour obtenir un fichier java.util.Date . Ensuite, vous pouvez utiliser la conversion dans ma réponse pour obtenir un fichier java.sql.Date. –

1

Je pense que la réponse détaillée que vous pouvez lire ici: How to insert date in sqlite through java

En bref, vous pouvez insérer la date comme setString (ou setInt, ou setLong (voir le lien ci-dessus), mais pas setDate):

PreparedStatement ps = connection.prepareStatement(<your sql>); 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
ps.setString(1, df.format(<your date>)); 
Questions connexes