http://www-128.ibm.com/developerworks/cn/linux/l-pgsql/index.html
可以看下上面例子,其中连接数据库的部分也可以这样(因为数据库权限设置不同,有的需要用户名密码才能访问库,如果完全信任关系按给的例子就行了):
PGconn *conn;
PGresult *res, *res1, *res2;
char *pghost = "localhost";
char *pgport ="5432";
char *pgoptions =NULL;
char *pgtty = NULL;
char *dbname ="testdb";
char *login = "test";
char *pwd = "123456";建立连接就可以:
conn = PQsetdb(pghost,pgport,pgoptions,pgtty,dbname);
conn = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName, login, pwd);
可以看下上面例子,其中连接数据库的部分也可以这样(因为数据库权限设置不同,有的需要用户名密码才能访问库,如果完全信任关系按给的例子就行了):
PGconn *conn;
PGresult *res, *res1, *res2;
char *pghost = "localhost";
char *pgport ="5432";
char *pgoptions =NULL;
char *pgtty = NULL;
char *dbname ="testdb";
char *login = "test";
char *pwd = "123456";建立连接就可以:
conn = PQsetdb(pghost,pgport,pgoptions,pgtty,dbname);
conn = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName, login, pwd);
解决方案 »
- mysql如何为下面的单表添加索引,提高查询效率
- mysql 变量声明
- MYSQL 问题,十分头疼,请大家讨论
- 删除有相同one_id和other_id的记录,只剩下最新的一条
- Mysql本地连接出错
- MySQL 安装后无法登入怎么办?
- Delphi + ADO 如何連PostgreSQL? (錯誤:'...unhandled type 1015')
- 请问可以将整个数据表导入另一个表,同时将某个字段改成其他值吗?
- Mysql Innodb数据库误删除了文件,怎么恢复?
- mysql有没有办法记录查询错误、警告日志?
- 为什么不能在图形界面上操作了?
- ***请问如何获得表中的最小可用id?马上给分!***
需要链接libpq库,应包含头文件include/libpq-fe.h
路径要看你具体将postgresql安装在哪里啦
给你一个具体例子吧(从www.pgsqldb.org上copy的)!!!
#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 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);
} /* debug = fopen("/tmp/trace.out","w"); */
/* PQtrace(conn, debug); */ /* start a transaction block */
res = PQexec(conn, "BEGIN");
if (!res || 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 rows from the pg_database, the system catalog of
* databases
*/
res = PQexec(conn, "DECLARE mycursor CURSOR FOR SELECT * FROM pg_database");
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);
} /* 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 rows */
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 cursor */
res = PQexec(conn, "CLOSE mycursor");
PQclear(res); /* commit the transaction */
res = PQexec(conn, "COMMIT");
PQclear(res); /* close the connection to the database and cleanup */
PQfinish(conn); /* fclose(debug); */
return 0;}