LINUX.ORG.RU

клиентские приложения под PostgreSQL


0

0

Ребята пожалуйста если кто-нибудь разробатывал клиентские приложения под PostgreSQL на С/C++ подскажите каким образом связаться с базой данных и затем сделать в ней SELECT и обрабатывать далее в программе его результаты...

Спасибо..

anonymous

//#include "fotometry.h" #include <stdio.h> #include <stdlib.h> #include "libpq-fe.h"

const char *conninfo; PGconn *conn; PGresult *res; int nFields; int i,a,b,c; char t; double ra,dec; PGresult *result; int main (void) { conninfo = "dbname = imdata"; conn = PQconnectdb(conninfo); if (PQstatus(conn) == CONNECTION_BAD) { fprintf(stderr, "Connection to database '%s' failed.\n", conninfo); fprintf(stderr,"%s", PQerrorMessage(conn)); PQfinish(conn); exit(1); } result = PQexec(conn, " SELECT p_raw_id,coord2000,dir_path from proc_data where id>50 order by dir_path;");

if ((!result) || (PGRES_TUPLES_OK != PQresultStatus(result))) { fprintf(stderr, "Error sending query.\nDetailed report: %s\n", PQerrorMessage(conn)); PQfinish(conn); exit(1); } fprintf (stderr,"read db - [OK]\n"); for (i = 0; i < PQntuples(result); i++){ /* loop through all rows returned */ printf("%s | %s | %s | \n", PQgetvalue(result, i, 0),PQgetvalue(result, i, 1),PQgetvalue(result, i, 2)); sscanf ( PQgetvalue(result, i, 0),"{%d,%d,%d}",&a,&b,&c); sscanf (PQgetvalue(result, i, 1),"(%lf %c %lf",&ra,&t,&dec); fprintf (stderr,"%d %d %d",a,b,c); fprintf (stderr,"% lf %lf\n",ra,dec); //fotometry (PQgetvalue(result, i, 2),ra,dec,a);

} PQclear(res); /* free result */ PQfinish(conn); /* disconnect from the database */ return 0; }

смотри должно работать

evgeny
()

//#include "fotometry.h"
#include <stdio.h>
#include <stdlib.h>
#include "libpq-fe.h"


const char *conninfo;
PGconn *conn;
PGresult *res;
int nFields;
int i,a,b,c;
char t;
 double ra,dec;
PGresult *result;
int main (void)
{
conninfo = "dbname = imdata";
conn = PQconnectdb(conninfo);
if (PQstatus(conn) == CONNECTION_BAD) {
 fprintf(stderr,
 "Connection to database '%s' failed.\n", conninfo);
  fprintf(stderr,"%s", PQerrorMessage(conn));
   PQfinish(conn);
    exit(1);
    }
    result = PQexec(conn, " SELECT p_raw_id,coord2000,dir_path from proc_data where id>50 order by dir_path;");

    if ((!result) || (PGRES_TUPLES_OK != PQresultStatus(result))) {
     fprintf(stderr,
     "Error sending query.\nDetailed report: %s\n",
    PQerrorMessage(conn));
    PQfinish(conn);
    exit(1);
}
fprintf (stderr,"read db - [OK]\n");
for (i = 0; i < PQntuples(result); i++){ /* loop through all rows returned */
printf("%s | %s | %s | \n", PQgetvalue(result, i, 0),PQgetvalue(result, i, 1),PQgetvalue(result, i, 2)); 
sscanf ( PQgetvalue(result, i, 0),"{%d,%d,%d}",&a,&b,&c);
sscanf (PQgetvalue(result, i, 1),"(%lf %c %lf",&ra,&t,&dec);
fprintf (stderr,"%d %d %d",a,b,c);
fprintf (stderr,"% lf %lf\n",ra,dec);
//fotometry (PQgetvalue(result, i, 2),ra,dec,a);

}
PQclear(res); /* free result */
PQfinish(conn); /* disconnect from the database */
return 0;
}





смотри должно работать



evgeny
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.