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

C++ Discussion :

appel des fonction sql sous C++


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 16
    Points
    16
    Par défaut appel des fonction sql sous C++
    Bonjour,

    J'ai un problème que j'arrive pas à résoudre.
    j'appelle une fonction sql qui utilise un select, et ça marche.
    j'appelle une fonction qui utilise un insert et ça ne s'exécute pas.
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    PGresult* result1;
    	PGresult* result2;
    	PGresult* result3;
    	PGresult* result4;
     
     
    	//sprintf(commande_sql1,"select verify_replicat('192.168.1.1', 'ADC16448521539632AB165', current_timestamp);");
    	const char *commande_sql1="select * from ips;";
    	result1 = PQexec(connect_database, commande_sql1);
    	char *val1 = PQgetvalue(result1,0,0);
    	printf("%s \n", val1);
     
    	if ((PQresultStatus(result1) != PGRES_TUPLES_OK ))
    	{
               fprintf(stderr, "couldnt execute query 1\n");
     
               PQclear(result1);
     
    	}
    	else {
    	printf ("commande 1 exécutée\n");
    	}
     
     
    	//sprintf(commande_sql2,"select verify_replicat('192.168.1.1', 'ADC16448521539632AB165', current_timestamp);");
    	const char *commande_sql2="select mape_add_ip('192.168.1.4');";
    	result2 = PQexec(connect_database, commande_sql2);
    	char *val2 = PQgetvalue(result2,0,0);
    	printf("%s \n", val2);
    	if ((PQresultStatus(result2) != PGRES_TUPLES_OK ))
    	{
               fprintf(stderr, "couldnt execute query 2\n");
     
               PQclear(result2);
     
    	}
    	else {
    	printf ("commande 2 exécutée\n");
    	}
     
     
     
    	//sprintf(commande_sql3,"select verify_replicat('192.168.1.2', 'BCC16448521539632AB165', current_timestamp);");
    	const char *commande_sql3="select verify_replicat('192.168.1.2', 'BCC16448521539632AB165', current_timestamp);";
    	result3 = PQexec(connect_database, commande_sql3);
    	char *val3 = PQgetvalue(result3,0,0);
    	printf ("%s\n", val3);
    	if ((PQresultStatus(result3) != PGRES_TUPLES_OK ))
    	{
               fprintf(stderr, "couldnt execute query 3\n");
     
               PQclear(result3);
     
    	}
    	else {
    	printf ("commande 3 exécutée\n");
    	}
     
     
     
    	//sprintf(commande_sql4,"select verify_replicat('192.168.1.3', 'ADC16448521539632AB165', current_timestamp);");
    	const char *commande_sql4="select verify_replicat('192.168.1.3', 'ADC16448521539632AB165', current_timestamp);";
    	result4 = PQexec(connect_database, commande_sql4);
    	char *val4 = PQgetvalue(result4,0,0);
    	printf ("%s\n", val4);
    	if ((PQresultStatus(result4) != PGRES_TUPLES_OK ))
    	{
               fprintf(stderr, "couldnt execute query 4\n");
     
               PQclear(result4);
     
    	}
    	else {
    	printf ("commande 4 exécutée\n");
    	}
    les deux premières requêtes fonctionnent puisqu'il s'agit d'une sélection simple, et d'une fonction qui utilise la sélection.
    les deux dernières ne s'exécutent pas puisqu'ils font appels à une fonction qui ne fait que l'insertion

  2. #2
    Membre actif Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Points : 288
    Points
    288
    Par défaut
    Je ne connais pas cette librairie PGxxx, c'est PostgreSql ?
    Si c'est le cas, ne faudrait-il pas plutôt poser la question dans un forum PostgreSql ?

    De plus ton exemple n'est pas compilable / complet , donc à part te plonger dans le manuel pour regarder ce que fait PQexec entre autre et / ou trouver un tutoriel, je ne vois pas quel autre conseil te donner ...

    Tout à fait entre nous, ton code c'est du C, pas du C++.

    Bonne recherche !

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Plus simplement, le select fonctionne (lecture) mais pas l'insert (écriture) ?
    T'as les droits d'écriture dans ta db ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    en effet c du postgres, et c en C wé.

    pour l'écriture, j'ai les droits sur ma BD.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Tes SELECT devraient de toutes façons retourner un resultset, même vide.

    Il arrive parfois qu'une insertion, dans certaines conditions, ouvre une transaction et nécessite un COMMIT pour prendre effet. C'est une curiosité que j'avais déjà remarqué sur un Sybase. Sur PostGreSQL, cela dit, cela reste étrange.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 50
    Points
    50
    Par défaut
    Le commit a quand même un certain intérêt. Il permet de faire des vérifications d'intégrités sur ce que l'on vient d'insérer avant de valider.
    Donc a tester selon ta base a rajouter une commande commit a la suite de ton insertion.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Koemgun Voir le message
    Le commit a quand même un certain intérêt. Il permet de faire des vérifications d'intégrités sur ce que l'on vient d'insérer avant de valider.
    Donc a tester selon ta base a rajouter une commande commit a la suite de ton insertion.
    Ce n'est pas les transactions en elles-mêmes que je remets en cause, bien sûr, mais le fait qu'elles soient ouvertes « implicitement » sur certains SGBD…

Discussions similaires

  1. pb d'appel des fonction sous matlab
    Par didouainos dans le forum MATLAB
    Réponses: 0
    Dernier message: 12/03/2015, 17h09
  2. Faire appel à des fonctions MS SQL Server
    Par digital prophecy dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/12/2007, 22h06
  3. Comment appeler des fonctions C# sous Excel
    Par ttttnht dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/09/2006, 16h49
  4. Réponses: 6
    Dernier message: 30/09/2005, 00h53
  5. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33

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