#include #include int main() { // quelques déclarations EXEC SQL BEGIN DECLARE SECTION; const char *cible = "galette@localhost"; const char *utilisateur = "guillaume"; unsigned char mon_contenu[32]; char *mon_contenuBytea; unsigned long taille1; unsigned long taille2; EXEC SQL END DECLARE SECTION; // initialisation de mon contenu avec les octets de valeurs décimales 61, 0, 39, 61, 0 sprintf(mon_contenu, "%c%c%c%c%c", 61, 0, 39, 61, 0); // taille initialisée manuellement... car strlen s'arrêterait au deuxième caractère (0) taille1 = 5; //strlen(mon_contenu); // connexion à la base EXEC SQL CONNECT TO :cible USER :utilisateur; // utilisation de PQescapeBytea pour échapper le contenu de mon_contenu mon_contenuBytea = PQescapeBytea ( mon_contenu, taille1, &taille2 ); //taille2 = PQescapeString ( mon_contenuBytea, mon_contenu, taille1 ); // quelques messages de débogage printf("Chaîne avant %s\n", mon_contenu); printf("Taille avant %d\n", taille1); printf("Chaîne après %s\n", mon_contenuBytea); printf("Taille après %d\n", taille2); // tentative avec un prepare EXEC SQL prepare ST_ADD from "INSERT INTO interieur (nom, contenu) VALUES ('pouet', ?)"; EXEC SQL execute ST_ADD using :mon_contenuBytea; EXEC SQL COMMIT; // tentative avec un insert direct EXEC SQL INSERT INTO interieur (nom, contenu) VALUES ('pouet', :mon_contenuBytea); EXEC SQL COMMIT; // déconnexion de la base EXEC SQL DISCONNECT; // bye-bye :) return(0); }