join question - requesting for a simple C program where it can INSERT data into database as reference

Поиск
Список
Период
Сортировка
От Christoph Haller
Тема join question - requesting for a simple C program where it can INSERT data into database as reference
Дата
Msg-id 200206171146.NAA13612@rodos
обсуждение исходный текст
Ответ на Re: join question - requesting for a simple C program where it can INSERT data into database as reference  ("joo" <joo@sebasasia.com>)
Список pgsql-sql
joo, 
it's just like 
res = PQexec(conn, "BEGIN");
do 
res = PQexec(conn, "insert into events values('blabla', ...)");

if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
tells you if your command was ok 

if you do an update or delete 
atoi(PQcmdTuples(res)) 
tells you how many rows are affected 

I hope this helps. 
Regards, Christoph 
> My problem is, i am writing a simple retrieval program using C, to retrieve
> a set of records from database. Then i'll make certain calculation based on
> the data that i have retrieved and write it on a new database. I have follow
> the sample program  to do the retrieval and it works. But i don't seems to
> have any samples to do an INSERT to the database? please anyone who have
> such simple or working programs where it can INSERT to any database , please
> reply to me as a reference.
> 
> 
> here is the sample program that i used to do my retrieval:
> 
> 
> #include <stdio.h>
> #include "libpq-fe.h"
> 
> void
> exit_nicely(PGconn *conn)
> {
>     PQfinish(conn);
>     exit(1);
> }
> 
> main()
> {
>     char       *pghost,
>                *pgport,
>                *pgoptions,
>                *pgtty;
>     char       *dbName;
>     int         nFields;
>     int         i,
>                 j;
> 
> 
> 
>     PGconn     *conn;
>     PGresult   *res;
> 
>     pghost = NULL;
>     pgport = NULL;
>     pgoptions = NULL;
> 
>     pgtty = NULL;
>     dbName = "template1";
> 
> 
>     conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
> 
> 
>     if (PQstatus(conn) == CONNECTION_BAD)
>     {
>         fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
>         fprintf(stderr, "%s", PQerrorMessage(conn));
>         exit_nicely(conn);
>     }
> 
> 
>     res = PQexec(conn, "BEGIN");
>     if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
> 
>     {
>         fprintf(stderr, "BEGIN command failed\n");
>         PQclear(res);
>         exit_nicely(conn);
>     }
> 
> 
>     PQclear(res);
> 
> 
>     res = PQexec(conn, "DECLARE mycursor CURSOR FOR select * from event");
>     if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
>     {
>         fprintf(stderr, "DECLARE CURSOR command failed\n");
>         PQclear(res);
>         exit_nicely(conn);
>     }
>     PQclear(res);
>     res = PQexec(conn, "FETCH ALL in mycursor");
>     if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
>     {
>         fprintf(stderr, "FETCH ALL command didn't return tuples
> properly\n");
>         PQclear(res);
>         exit_nicely(conn);
>     }
> 
> 
>     nFields = PQnfields(res);
>     for (i = 0; i < nFields; i++)
>         printf("%-15s", PQfname(res, i));
>     printf("\n\n");
> 
> 
>     for (i = 0; i < PQntuples(res); i++)
>     {
>         for (j = 0; j < nFields; j++)
>             printf("%-15s", PQgetvalue(res, i, j));
>         printf("\n");
>     }
>     PQclear(res);
> 
> 
>     res = PQexec(conn, "CLOSE mycursor");
>     PQclear(res);
> 
>     res = PQexec(conn, "COMMIT");
>     PQclear(res);
> 
> 
>     PQfinish(conn);
> 
>     return 0;
> 
> }
> Thanks,
> joo



В списке pgsql-sql по дате отправления:

Предыдущее
От: Rudi Starcevic
Дата:
Сообщение: template1 - recreate
Следующее
От: Matt
Дата:
Сообщение: check