계속된 질문에 대한 답변을 해주셔서 정말 감사합니다.
제가 테스트 했던 소스입니다.
Postgres기본 예제를 갖다 사용한 것입니다.
#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;
/* File *debug; */
PGconn *conn;
PGresult *res;
/*
* begin, by setting the parameters for a backend connection if the
* parameters are null, then the system will try to use reasonable
* defaults by looking up environment variables or, failing than,
* using hardwired constants
*/
pghost = NULL; /* host name of the backend server */
pgport = NULL; /* port of the backend server */
pgoptions = NULL; /* special options to start up the backend server */
pgtty = NULL; /* debugging tty for the backend server */
dbName = "test1";
/* make a connection to the database */
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
/*
* check to see that the backend connection was successfully made */
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
/* debug = fopen("/tmp/trace.out", ""); */
/* PQtrace(conn, debug); */
/* start a transaction block */
res = PQexec(conn, "BEGIN");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed\n");
PQclear(res);
exit_nicely(conn);
}
/*
* should PQclear PGresult it is no longer needed to avoid memory leark
*/
PQclear(res);
/*
* fetch instances from the pg_database, the system catalog of databases
*/
res = PQexec(conn, "DECLARE mycursor CURSOR FOR select * from test");
if (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 (PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "FETCH ALL command didn't return tuples properly\n");
PQclear(res);
exit_nicely(conn);
}
printf("Content/type: 'text/html' \n\n");
printf("<html> \n");
printf("<head> \n");
printf("<meta HTTP/EQUIV='Content/Type' CONTENT='text/html'> \n");
printf("<title>테스트</title> \n");
printf("</head> \n");
printf("<body bgcolor=yellow>\n");
/* first, print out the attribute names */
nFields = PQnfields(res);
for (i = 0; i < nFields; i++)
{
printf("%/15s", PQfname(res, i));
}
printf("\n\n");
/* next, print out the instances */
for (i=0; i < PQntuples(res); i++)
{
for (j=0; j < nFields; j++)
printf("%/15s", PQgetvalue(res, i, j));
printf("\n");
}
PQclear(res);
printf("</body>\n");
printf("</html>\n");
/* close the cursor */
res = PQexec(conn, "CLOSE mycursor");
PQclear(res);
/* commit the traction */
res = PQexec(conn, "COMMIT");
PQclear(res);
/* close the connection to the database and cleanup */
PQfinish(conn);
/* fclose(debug); */
}
> > 물론 그렇게도 써보았고
> > <head>
> > <meta HTTP/EQUIV="Content/Type' CONTENT="text/html">
> > </head>
> > 라고도 넣어봤지만 안되네요...
> > 우선 lynx에서 보여야 하는데 계속 깨어지니... 이거야...
> > 난감하네요...
> >
>
> 저가 제시했던 방법은 올바른 방법입니다. 그렇게 했는데도 에러가 난다면
> 뭔가 다른 원인을 찾아 봐야 할 듯 합니다.
> 소스라도 어떻게 올리시던지 아님 메일로라도 보내 보시지요. 저가 도움이
> 될 지는 모르겠지만 한번 살펴 보도록 하지요.
>
|