67 lines
1.8 KiB
C
67 lines
1.8 KiB
C
/* test program for libpq (postgresql) */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include <libpq-fe.h>
|
|
|
|
void
|
|
sql_get_tuple( int *qryhandle, int *ntuple, char *tuple ) {
|
|
char *s;
|
|
char *p;
|
|
// danilo (
|
|
Oid tipo;
|
|
// danilo )
|
|
int nfield=0;
|
|
int maxfield = PQnfields((PGresult *)*qryhandle);
|
|
while (nfield < maxfield) {
|
|
s = PQgetvalue((PGresult *)*qryhandle,*ntuple,nfield);
|
|
tipo = PQftype((PGresult *)*qryhandle, nfield);
|
|
p = s;
|
|
// 1700 numerico
|
|
// 1043 string
|
|
// 1231 occurs numerico
|
|
// 1015 occurs string
|
|
// comeca danilo
|
|
if (tipo == 1231 || tipo == 1015) {
|
|
p++;
|
|
while (*p) {
|
|
if (*p == ',') {
|
|
*tuple++ = '#';
|
|
*tuple++ = '%';
|
|
} else
|
|
if (*p == '}')
|
|
break;
|
|
else
|
|
if (*p == '.' && tipo == 1231)
|
|
*tuple++ = ',';
|
|
else
|
|
if (*p != '"')
|
|
*tuple++ = *p;
|
|
p++;
|
|
}
|
|
} else
|
|
// termina danilo
|
|
/* while (*p) {
|
|
if (*p == '.') {
|
|
*p= ',';
|
|
break;
|
|
}
|
|
p++;
|
|
} */
|
|
if(*s){
|
|
while (*s) {
|
|
if (tipo == 1700 && *s == '.') {
|
|
*tuple++ = ',';
|
|
s++;
|
|
} else
|
|
*tuple++ = *s++;
|
|
}
|
|
} else
|
|
*tuple++ = ' ';
|
|
*tuple++ = '#';
|
|
*tuple++ = '%';
|
|
nfield++;
|
|
}
|
|
}
|