2017-02-19 4 views
0

J'essaie de supprimer un enregistrement à l'aide de la fonction libpq PQexecParams(). La requête est renvoyée mais la ligne requise n'est pas supprimée de la table. Voici l'extrait de mon code pour référence. J'ai utilisé PQexecParams() pour sélectionner et insérer avec succès. Pourriez-vous s'il vous plaît aider, qu'est-ce qui me manque?Supprimer l'enregistrement à l'aide de la requête PQexecParams() libpq

PGresult *res; 
    int meter_info_id; 

    printf ("Enter Meter Information Id"); 
    scanf("%d", &meter_info_id); 

    char *stm_write_reg = "delete from write_reg_set where meter_id=$1"; 

    int nparam = 1; 

    //set the values to use 
    const char *values[1] = {(char *)&meter_info_id}; 

    //calculate the lengths of each of the values 
    int lengths[1] = {sizeof(meter_info_id)}; 

    //state which parameters are binary 
    int binary[1] = {1}; 


    res = PQexecParams(conn, 
      stm_write_reg, 
      nparam, //number of parameters 
      NULL, //ignore the Oid field 
      values, //values to substitute $1 and $2 and so on 
      lengths, //the lengths, in bytes, of each of the parameter values 
      binary, //whether the values are binary or not 
      0);  //we want the result in text format 

    if (PQresultStatus(res) != PGRES_COMMAND_OK) 
    { 
     fprintf(stderr, "stm_write_reg failed: %s", PQerrorMessage(conn)); 
     exit_nicely(conn,res); 
    } 


    PQclear(res); 

Répondre

0

J'ai trouvé le problème. je manquais

meter_info_id = htonl(meter_info_id); 

En ajoutant, résolu le problème.