⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testlibpq.c

📁 关系型数据库 Postgresql 6.5.2
💻 C
字号:
/* * testlibpq.c *		Test the C version of LIBPQ, the POSTGRES frontend library. * * */#include <stdio.h>#include "libpq-fe.h"static voidexit_nicely(PGconn *conn){	PQfinish(conn);	exit(1);}intmain(){	char	   *pghost,			   *pgport,			   *pgoptions,			   *pgtty;	char	   *dbName;	int			nFields;	int			i,				j;#ifdef DEBUG	FILE	   *debug;#endif	 /* 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 that,	 * 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 = "template1";	/* 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);	}#ifdef DEBUG	debug = fopen("/tmp/trace.out", "w");	PQtrace(conn, debug);#endif	 /* 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 whenever it is no longer needed to avoid	 * memory leaks	 */	PQclear(res);	/*	 * fetch instances from the pg_database, the system catalog of	 * databases	 */	res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database");	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 myportal");	if (PQresultStatus(res) != PGRES_TUPLES_OK)	{		fprintf(stderr, "FETCH ALL command didn't return tuples properly\n");		PQclear(res);		exit_nicely(conn);	}	/* 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);	/* close the portal */	res = PQexec(conn, "CLOSE myportal");	PQclear(res);	/* end the transaction */	res = PQexec(conn, "END");	PQclear(res);	/* close the connection to the database and cleanup */	PQfinish(conn);#ifdef DEBUG	fclose(debug);#endif	 /* DEBUG */	exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -