📄 tt.c
字号:
/**
*gcc -o tt tt.c -I/usr/local/postgresql/include -L/usr/local/postgresql/lib -lpq
*
*
*g++ -static -L/usr/lib -lpq -o test test.cpp
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "libpq-fe.h"
static void
exit_nicely(PGconn *conn)
{
PQfinish(conn);
exit(1);
}
int
main(int argc,char **argv)
{
const char *conninfo;
PGconn *conn;
PGresult *res;
int nFields;
int i,j;
char *msg;
if(argc>1)
conninfo = argv[1];
else
conninfo="host=127.0.0.1 user=postgres password=postgres dbname=sms port=5432";
conn = PQconnectdb(conninfo);
if(PQstatus(conn) != CONNECTION_OK)
{
fprintf(stderr,"Connection to database failed: %s",
PQerrorMessage(conn));
exit_nicely(conn);
}
res=PQexec(conn,"BEGIN");
if(PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr,"Begin command failed: %s",
PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
/*
业务代码开始
*/
res=PQexec(conn,"insert into test values(2,'test2')");
msg = PQresultErrorMessage(res);
if(strlen(msg) > 0)
{
printf ("execute prepared statemnt faild caused by : %s", msg);
}
/*
if(PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "Insert failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
*/
PQclear(res);
res=PQexec(conn,"select * from test");
if(PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "SELECT failed: %s", PQerrorMessage(conn));
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,"END");
//PQclear(res);
PQfinish(conn);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -