2017-02-19 27 views
0

Я пытаюсь удалить запись, используя функцию libpq PQexecParams(). Запрос успешно возвращен, но требуемая строка не удаляется из таблицы. Вот фрагмент из моего кода для справки. Я использовал PQexecParams() для выбора и вставки успешно. Не могли бы вы помочь, чего мне не хватает!Удалить запись, используя запрос libpq PQexecParams()

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); 

ответ

0

Я нашел проблему. я пропускал

meter_info_id = htonl(meter_info_id); 

Добавляя ее, исправил проблему.