Thread: FW: PQntuples and PQgetvalue problem.

FW: PQntuples and PQgetvalue problem.

From
zafer yagmuroglu
Date:


Hello,

In my C++ program, i want to partition sql table, there is sample code below. It is working right. the problem is after func  called 2 or 3 times in func1, PQntuples results 0 although tablename exist.  Also when i disabled PQntuples at if statement, other psql function PQgetvalue(res) return error that is "row number 0 is out of range 0..-1
there are a couple function call same as func1(to check tablename ), at func. when i disabled one of them another at PQntuples funcx return 0.  
i check so may times. it is so weird.

So i think you can help me.

Best regards.

Zafer,


Sample code : 


func1{
     
char cmd[100] = "";
      snprintf
(cmd,sizeof(cmd),"select tablename from pg_tables where tablename='%s'", tablename);

     
PGresult *res = PQexec(conn, cmd );

     
if (PQresultStatus(res) != PGRES_TUPLES_OK)
 
{
        logger
.error("PQexec: %s", PQerrorMessage(conn));
   
PQclear(res);
    wexit
(1);
 
}

     
if (PQntuples(res) == 0)
       
//
 
}

  func
{
     
PGresult *res;
      func1
();
      res
=PQexec(conn,"Select count(*) from persons");
     
if (PQresultStatus(res) != PGRES_TUPLES_OK)
     
{
      printf
("PQexec: %s", PQerrorMessage(conn));
     
PQclear(res);
     
exit(1);
     
}
     
if( atoi(PQgetvalue(res,0,0)) != 0)
        // some code PQexec()
}
    }