IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces de programmation Oracle Discussion :

[PRO*C] conversion string en date (C vers SQL)


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut [PRO*C] conversion string en date (C vers SQL)
    bonjour, j'ai écrit un programme en C qui permet de lire un String "YYYY/MM/DD"
    qui correspond à une date à insérer dans une table (SQL).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      char laDate[10];//a été déclaré dans la declare section 
            printf("Entrer la date (YYYY/MM/DD)");
     
    	fgets(laDate,10,stdin);
     
    	EXEC SQL INSERT INTO commandes   
              (client_id,date_commande,date_echeance)
    		VALUES (:idClient,getdate(),:laDate);
    après il y a une erreur de segmentation, alors que si je retape la même chose dans le serveur sql il insère la date.
    comment transformer ce string en un format de date acceptable ?

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Normal, laDate n'est pas assez grand pour contenir une chaîne contenant une date au format yyyy/mm/dd.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut
    j'avais essayé avec un pointeur char * et aussi avec un tableau plus grand
    char laDate[15];
    Et cela ne marchait pas non plus, il parait qu'il faut faire EXEC SQL COMMIT après un insert

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    de plus fgets stocke le caractère de fin de ligne '\n'.

    Il te faut faire la vérification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char *p=NULL ;
     
    if ( (p = strchr ( Date, '\n')) != NULL )
        *p = '\0' ;

  5. #5
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    En PRO*C, il faut effectivement commiter la transaction par un EXEC SQL COMMIT pour que ton insertion soit effective.

    Comme cela t'a été expliqué, ton tableau est trop petit et faut faire gaffe au \n de la saisie de fgets()
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut
    ok ça marche now, j'ai agrandit le tableau pour recevoir un format correct et g rajouté un '\0' en fin de tableau après fgets.
    et le sql commit n'était pas nécessaire finalement.
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion string to date
    Par Fanny23 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 27/01/2012, 00h24
  2. Conversion string en date et heure
    Par loreleï85 dans le forum C#
    Réponses: 14
    Dernier message: 24/01/2007, 15h47
  3. Conversion String en Hexa ("1F") vers byte
    Par ducseb dans le forum Langage
    Réponses: 1
    Dernier message: 15/04/2006, 20h03
  4. conversion String en Date
    Par lisa-java dans le forum Langage
    Réponses: 3
    Dernier message: 12/01/2006, 16h14
  5. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo