typedef struct _PQprintOpt { pgbool header; //print output field headings and row count pgbool align; //fill align the fields pgbool standard; //old brain dead format pgbool html3; //output html tables pgbool expanded; //expand tables pgbool pager; //use paper for output if needed char *fieldSep; //field separator char *tableOpt; //insert to HTML char *caption; //HTML
char **fieldName; // null terminated array of replacement field names } PQprintOpt;
游标。。。。遍历 結果数据。 伪码: BEGIN A TRANSACTION DECLARE CURSOR mycursor FOR SELECT-statement OPEN mycursor DO { FETCH some data form mycursor Process the row(s) retrieved } WHILE the FETCH command found data CLOSE mycursor COMMIT WORK
数据返回中我们可以从PGresult中取得列的信息: 取得列数: int PQnfields(PGresult *result); 取得每一列的名称(第一列处于索引0): char *PQfname(PGresult *result, int field_index); 取得数据的大小,返回的是PostgreSQL的内部空间,VARCHAR返回 -1; int PQfsize(PGresult *result, int field_index); 访问检索数据 取得数据时,用PQgetlength来获得返回 数据信息的长度 int PQgetlength(PGresult *result, int tuple_number, int field_index); 取得数据的字符串描述信息: char *PQgetvalue(PGresult *result, int tuple_number, int field_index); 检测返回是否在数据库中以NULL(表示未知)值: int PQgetisnull(PGresult *result, int tuple_number,int field_index); 4,终止连接 正常的或非正常的都要调用它,因为它还要释放资源: void PQfinish(PGconn *conn);