// L'en-tête de la bibliothèque client PostgreSQL 
 ``` 
 
 2. Établir la connexion : 
 
 C’est le cœur du processus. Vous aurez besoin d'une chaîne de connexion qui spécifie les paramètres de la base de données. 
 
 ```c 
 PGconn *conn; 
 const char *conninfo; 
 
 conninfo ="nom de base de données =utilisateur de ma base de données =mot de passe de mon utilisateur =mon mot de passe hôte =port localhost =5432"; // Remplacer par vos coordonnées 
 
 conn =PQconnectdb(conninfo); 
 
 si (PQstatus(conn) !=CONNECTION_OK) { 
 fprintf(stderr, "Échec de la connexion à la base de données :%s", PQerrorMessage(conn)); 
 PQfinish(conn); 
 sortie(1); 
 } 
 ``` 
 
 * `dbname=mabase de données` : Le nom de votre base de données PostgreSQL. 
 * `user=monutilisateur` : Votre nom d'utilisateur PostgreSQL. 
 * `password=mon mot de passe` : Votre mot de passe PostgreSQL. 
 * `host=localhost` : Le nom d'hôte ou l'adresse IP du serveur PostgreSQL. Changez si votre base de données n'est pas locale. 
 * `port=5432` : Le numéro de port sur lequel PostgreSQL écoute (la valeur par défaut est 5432). 
 
 3. Exécuter des requêtes : 
 
 Après vous être connecté, vous pouvez exécuter des requêtes SQL. Cet exemple montre une simple requête « SELECT » :
 
 ```c 
 PGrésultat *res; 
 res =PQexec(conn, "SELECT version();"); 
 
 si (PQresultStatus(res) !=PGRES_TUPLES_OK) { 
 fprintf(stderr, "Échec de SELECT :%s", PQerrorMessage(conn)); 
 PQclear(res); 
 PQfinish(conn); 
 sortie(1); 
 } 
 
 printf("Version PostgreSQL :%s\n", PQgetvalue(res, 0, 0)); 
 
 PQclear(res); // Libère la mémoire du jeu de résultats 
 ``` 
 
 * `PQexec(conn, "SELECT version();")` : Exécute la requête SQL. 
 * `PQresultStatus(res)` : Vérifie l'état de l'exécution de la requête. `PGRES_TUPLES_OK` indique le succès. 
 * `PQgetvalue(res, 0, 0)` : Récupère la valeur du jeu de résultats. `(0, 0)` spécifie la première ligne (0) et la première colonne (0). 
 
 4. Gérer d'autres types de requêtes (INSERT, UPDATE, DELETE) : 
 
 Pour les requêtes `INSERT`, `UPDATE` et `DELETE`, vous vérifierez généralement `PQcmdTuples` pour voir combien de lignes ont été affectées. 
 
 ```c 
 res =PQexec(conn, "INSERT INTO matable (colonne1, colonne2) VALEURS ('valeur1', 'valeur2');"); 
 
 si (PQresultStatus(res) ==PGRES_COMMAND_OK) { 
 printf("INSERT réussi. %ld lignes affectées\n", PQcmdTuples(res)); 
 } autre { 
 fprintf(stderr, "Échec de l'INSERT :%s", PQerrorMessage(conn)); 
 } 
 PQclear(res); 
 ``` 
 
 
 5. Fermez la connexion : 
 
 Fermez toujours la connexion lorsque vous avez terminé. 
 
 ```c 
 PQfinish(conn); 
 ``` 
 
 Exemple complet : 
 
 ```c 
 #include  
 #include  
 #include  
 #inclure  
 
 int main() { 
 PGconn *conn; 
 const char *conninfo; 
 PGrésultat *res; 
 
 conninfo ="nom de base de données =utilisateur de ma base de données =mot de passe de mon utilisateur =mon mot de passe hôte =port localhost =5432"; // Remplacer par vos coordonnées 
 
 conn =PQconnectdb(conninfo); 
 
 si (PQstatus(conn) !=CONNECTION_OK) { 
 fprintf(stderr, "Échec de la connexion à la base de données :%s", PQerrorMessage(conn)); 
 sortie(1); 
 } 
 
 res =PQexec(conn, "SELECT version();"); 
 si (PQresultStatus(res) !=PGRES_TUPLES_OK) { 
 fprintf(stderr, "Échec de SELECT :%s", PQerrorMessage(conn)); 
 PQclear(res); 
 PQfinish(conn); 
 sortie(1); 
 } 
 
 printf("Version PostgreSQL :%s\n", PQgetvalue(res, 0, 0)); 
 PQclear(res); 
 
 
 PQfinish(conn); 
 renvoie 0 ; 
 } 
 ``` 
 
 Avant de compiler : 
 
 * Installer libpq-dev : Vous devrez installer les bibliothèques de développement client PostgreSQL. Sur les systèmes Debian/Ubuntu, cela se fait généralement avec :`sudo apt-get install libpq-dev` 
 * Compiler : Compilez votre code à l'aide d'un compilateur C (comme GCC) :`gcc votre_nom_programme.c -lpq -o votre_nom_programme` 
 
 
 N'oubliez pas de remplacer les valeurs de chaîne de connexion d'espace réservé par vos informations d'identification réelles de base de données. Une gestion minutieuse des erreurs est cruciale dans le code de production pour éviter les plantages inattendus. Cet exemple fournit une vérification d'erreur de base ; une gestion des erreurs plus robuste serait nécessaire pour une application du monde réel.