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

Réseau C Discussion :

requete


Sujet :

Réseau C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut requete
    je sais que c'est peut ete pas l'endrait mais bon j'ai vraiment besoin d'aide:
    je me conneste à un serveur postgresql et voila je ne sais pas comment éxecuter des requetes en C. J'ai bien regader la doc de stdlib.h, mais les exemples sont incompréhensibles, ca parle de socket et d'un tas de choses que le néophyte ne peut pas comprendre.
    Sachant que mes quelques requetes sont vraiment basiques: insérer des champs dans une tables et la mettre à jour régulièrement (c'est tout!).
    J'ai des bases en SQL mais là je ne vois pas comment en C on fait pour les lancer.
    SI vous avez de la doc ou des conseils, merci
    voila le début de mon code en C (qui fonctionne):
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <ctype.h>
    #include <libpq-fe.h>
    #include <time.h>
     
    void main()
    {
     
    PGconn *conn;
    const char  *conninfo;
    conn = PQsetdbLogin("192.168.68.78","5432","","","essai2","antoine","antoine");
     
      if (PQstatus(conn)!=CONNECTION_OK)
      {
      fprintf(stderr,"%s",PQerrorMessage(conn));
      }
      else
      {
      printf("connection réussie");
      }
     
        PQfinish(conn);
     
    }
    si vous pouviez me donner une commande simple du style "create table..." ou "insert into tabl.. val.."

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    On pourra surement mieux te renseigner sur la libPQ sur le forum PgSQL ^^

    Sinon, ya pas une fonction pour chaque type de requete, on utilise à chaque fois la meme fonction d'execution de requete (qui est equivalent a taper la requete dans le client pgsql ligne de commamnde)
    C'est peut etre PQexec() PQquery() chais plus.

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    voila, j'execute mon code, il s'exécute sans pab et m'afiche le nom de mes champs, mais il ne veut rien m'insérer dans mes champs, peut-etre que mon"insert into est mauvais?
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <ctype.h>
    #include <libpq-fe.h>
    #include <time.h>
     
    void main()
    {
    int i=0;
    int j=0;
    int nbfields,nbtuples;
    PGconn *conn;
    const char  *conninfo;
    conn = PQsetdbLogin("192.168.xx.xx","5432","","","antoine","antoine","antoine");
     
      if (PQstatus(conn)!=CONNECTION_OK)
      {
      fprintf(stderr,"%s",PQerrorMessage(conn));
      }
      else
      {
      printf("connection réussie\n");
      }
     
    PGresult* res;
     
    res=PQexec(conn,"BEGIN");
    PQclear(res);
    res=PQexec(conn,"select * from dservers");
    if(res==NULL)
    {
    fprintf(stderr,"echec de select");
    }    
    nbfields=PQnfields(res);
    nbtuples=PQntuples(res);
    for(i=0;i<nbfields;i++)
    {
    printf("%s\n",PQfname(res,i));
     for(j=0;j<nbtuples;j++)
     {
      printf("%s\n",PQgetvalue(res,j,i));
     }
    }
    PQclear(res);
     
     
    res=PQexec(conn,"insert into dservers(ip,pays,nb_users,nb_files) values('192','fr','007','009')");
     
    PQfinish(conn);
     
    }

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res=PQexec(conn,"insert into dservers(ip,pays,nb_users,nb_files) values('192','fr','007','009')");
    J'aurais une tendance à mettre plutôt:

    Quel sont les types de tes colonnes? A mon avis, ip, nb_users, nb_files sont des entiers...
    Et pays doit être un varchar (ou l'équivalent), donc doit être mis entre guillemets...
    Donc je mettrais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res=PQexec(conn,"insert into dservers(ip,pays,nb_users,nb_files) values(192,\"fr\",7,9)");
    Jc

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    pour simplifier toutes mes colonnes sont des "char"; même comme ca , ca ne fonctionne pas...
    je me demande si il faut vraiment utiliser "PQexec" pour inserer?

  7. #7
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Si vu la documentation, cela doit se faire avec PQexec mais est-ce que tu as corrigé ton code en mettant bien les \" \" partout à la place de tes ' ' ?

    D'ailleurs ce sujet dérive très dangereusement vers un topic Base de données, on est bien loin du C...

    Jc

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    ba oui j'ai bien fait la correction, mais tjs impossible d'insérer quoi que ce soi
    est-ce que quelqun connait la fonction qui permet une insertion?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 142
    Points
    142
    Par défaut
    Est-ce que tu penses à d'éventuels problemes de commit => est-tu bien en auto commit? Voir cfg de PostgreSQL
    Michaël Hooreman

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    et maintenant si je veux envoyer une variable dans ma base
    que faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    *buffer="france";
    res=PQexec(conn,"insert into dservers(pays) values(buffer)");

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51
  3. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  4. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43
  5. [Kylix] Requetes Kylix pour postgres
    Par Miltown dans le forum EDI
    Réponses: 1
    Dernier message: 29/05/2002, 20h22

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