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

Langage C++ Discussion :

BDD : Récupérer un datetime dans un string


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut BDD : Récupérer un datetime dans un string
    Bonjour,

    je souhaite dans le cadre d'un développement, récupérer en base de données, un champ nommé maDate de type : datetime.

    Seulement voilà je souhaites le récupérer dans un string.

    Voici mon code actuel, qui bien entendu me génère une belle erreur non pas à la compilation mais à l'exécution. (Blabla à propos de mauvais DLL, mais il est un peu à côté de la plaque, c'est bien un problème de type).

    Je précise que le problème intervient bien à l'exécution de mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _resultBDD->getString("maDate")
    , logique mettre un datetime dans un string...

    J'aurais aimé avoir un getInt pour string, mais je n'ai rien trouvé à ce sujet ou du moins ... je n'ai pas su m'y prendre.

    A noter que je ne peux pas modifier le type de mon champ maDate, dans la base de données.

    A oui une dernière chose qui me chagrine. Juste avant que ça n'explose, je peux tout de même afficher le résultat de la requête, et voir la date souhaitée. Du coup je peux en conclure qu'il y arrive, alors pourquoi râle t'il ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    void maClasse::maMethode(std::string const & numero)
    {
    	try		//tentative tvb
    	{
    		_statementBDD = _connexionBDD->createStatement();
    		_resultBDD = _statementBDD->executeQuery("SELECT * FROM cdr WHERE src=" + numero);
     
    		std::cout << "----- Source ----- Destination ----- Date ----- temps -----" << std::endl;
     
    		while (_resultBDD->next()) 
     
    			std::cout << _resultBDD->getString("src") << " - " << _resultBDD->getString("dst") << " - " << _resultBDD->getString("calldate") << " - " << _resultBDD->getInt("duration") << std::endl;
     
     
    		_resultBDD = NULL;
    	}
    	catch (SQLException &e) //exception 1
    	{
    		std::cerr << "ERROR: SQLException in " << __FILE__;
    		std::cerr << " (" << __FUNCTION__  << ") on line " << __LINE__ << std::endl;
    		std::cerr << "ERROR: " << e.what();
    		std::cerr << " (MySQL error code: " << e.getErrorCode();
    		std::cerr << ", SQLState: " << e.getSQLState() << ")" << std::endl;
    	}
    }

    Merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour et bienvenu,
    Pourrais-tu préciser ton framework (MFC, Qt, wxWidgets, Win32, etc...) et ton moteur SQL ?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Bonjour,

    FrameWork : Win32
    Dev sous : Visual C++ 2008
    Bdd : MySQL

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Que dit la doc de MySQL sur les getString ?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut

    #

    Datetimes with all-zero components (0000-00-00 ...) — These values can not be represented reliably in Java. Connector/J 3.0.x always converted them to NULL when being read from a ResultSet.

    Connector/J 3.1 throws an exception by default when these values are encountered as this is the most correct behavior according to the JDBC and SQL standards. This behavior can be modified using the zeroDateTimeBehavior configuration property. The allowable values are:

    *

    exception (the default), which throws an SQLException with an SQLState of S1009.
    *

    convertToNull, which returns NULL instead of the date.
    *

    round, which rounds the date to the nearest closest value which is 0001-01-01.

    Starting with Connector/J 3.1.7, ResultSet.getString() can be decoupled from this behavior via noDatetimeStringSync=true (the default value is false) so that you can get retrieve the unaltered all-zero value as a String. It should be noted that this also precludes using any time zone conversions, therefore the driver will not allow you to enable noDatetimeStringSync and useTimezone at the same time.
    En conséquence, ça doit être possible, mais je ne parviens à appliquer leurs explications.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Bonjour,

    auriez vous un coup de main à me donner quant à l'application de la doc MySQL ?

    J'ai "testé" un peu au pifomètre selon ce qui est expliqué mais, à chaque exécution du programme, ça génère une erreur dès lors que j'arrive à la récupération de cette donnée.

    A noter toute fois, que je l'affiche correctement, donc c'est qu'il y arrive, mais avec l'erreur impossible de poursuivre. Un datetime ne semble pas vouloir se caser dans un string.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Bonjour,

    j'en reviens à ce problème, histoire de clôturer mon programme, avec toutes les fonctions que je souhaitais.

    La documentation ne m'a pas permise d'avancer, ni mes diverses bidouilles.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Est-ce que ça marche sans la boucle? Est-ce que ça marche sans la récupération de la date?

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Bonjour,

    Ça marche sans la récupération de date , mais ça ne marche pas lorsque je met la récupération hors de la boucle. L'erreur étant clairement que je lui force la main avec le type de ma variable et il aime pas et me jète.

    une piste ?

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    et le getInt()? ou autre?

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    le getInt me fait une erreur pareillement. Pour ça que je cherchais un truc du genre : getDateTime() ... naïvement.

    Le truc serait d'appliquer ce qui est dit dans la documentation, mais je n'y parviens pas.

    Starting with Connector/J 3.1.7, ResultSet.getString() can be decoupled from this behavior via noDatetimeStringSync=true (the default value is false) so that you can get retrieve the unaltered all-zero value as a String. It should be noted that this also precludes using any time zone conversions, therefore the driver will not allow you to enable noDatetimeStringSync and useTimezone at the same time.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2014, 14h18
  2. [Débutant] récupérer une variable dans un string
    Par Franckmonj dans le forum VB.NET
    Réponses: 11
    Dernier message: 18/03/2014, 14h54
  3. récupérer un fichier dans une string
    Par barhili04 dans le forum C#
    Réponses: 3
    Dernier message: 17/05/2007, 17h49
  4. Réponses: 6
    Dernier message: 18/10/2006, 16h34
  5. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 00h55

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