日期:2014-05-16  浏览次数:20695 次

Linux下用C语言连接免费数据库PostgreSQL的问题
我输入了如下代码:
#include   <stdio.h>
#include   <stdlib.h>
#include   <libpq-fe.h>

int   main()
{
char   state_code[3];       /*存放用户输入的州代码*/
char   query_string[256];     /*存放构造的查询命令*/
PGconn   *conn; /*存放数据库连接信息*/
PGresult   *res; /*存放查询结果*/
int   i;


conn=PQconnectdb( "wangxsDB ");   /*连接数据库*/


if(PQstatus(conn)==CONNECTION_BAD)
{
fprintf(stderr, "数据库连接失败!\n ");
fprintf(stderr, "%s ",PQerrorMessage(conn));
exit(1);
}


printf( "Enter   a   state   code: ");   /*提示用户输入州代码*/
scanf( "%2s ",state_code);

sprintf(query_string, "SELECT   a   FROM   t   WHERE   code= '%s ' ",state_code);/*构造查询命令字符串*/
res=PQexec(conn,query_string);/*执行查询命令*/


if   (PQresultStatus(res)!=PGRES_TUPLES_OK)/*查询成功吗?*/
{
fprintf(stderr, "查询失败!\n ");
PQclear(res);
PQfinish(conn);
exit(1);
}
for(i=0;i <PQntuples(res);i++)/*循环处理每一个结果行*/
printf( "%s\n ",PQgetvalue(res,i,0));/*显示返回的结果*/

PQclear(res);

PQfinish(conn);

return   0;

}

然后编译cc   test.c   -o   exetest
出现了如下信息:
/tmp/ccOq9KIg.o(.text+0x28):   In   function   `main ':
:   undefined   reference   to   `PQconnectdb '
/tmp/ccOq9KIg.o(.text+0x3f):   In   function   `main ':
:   undefined   reference   to   `PQstatus '
/tmp/ccOq9KIg.o(.text+0x6e):   In   function   `main ':
:   undefined   reference   to   `PQerrorMessage '
/tmp/ccOq9KIg.o(.text+0xe3):   In   function   `main ':
:   undefined   reference   to   `PQexec '
/tmp/ccOq9KIg.o(.text+0xfa):   In   function   `main ':
:   undefined   reference   to   `PQresultStatus '
/tmp/ccOq9KIg.o(.text+0x126):   In   function   `main ':
:   undefined   reference   to   `PQclear '
/tmp/ccOq9KIg.o(.text+0x137):   In   function   `main ':
:   undefined   reference   to   `PQfinish '
/tmp/ccOq9KIg.o(.text+0x15c):   In   function   `main ':
:   undefined   reference   to   `PQntuples '
/tmp/ccOq9KIg.o(.text+0x180):   In   function   `main ':
:   undefined   reference   to   `PQgetvalue '
/tmp/ccOq9KIg.o(.text+0x1a9):   In   function   `main ':
:   undefined   reference   to   `PQclear '
/tmp/ccOq9KIg.o(.text+0x1ba):   In   function   `main ':
:   undefined   reference   to   `PQfinish '
collect2:   ld   returned   1   exit   status


请问是什么意思该怎么解决???谢谢了!

------解决方案--------------------
PQconnectdb的参数格式不对:
一下来自:
http://man.chinaunix.net/database/postgresql_8.0_CN/libpq-example.html
===
/*
* 如果用户在命令行上提供了参数,
* 那么拿它当作 conninfo 字串;否则缺省设置是 dbname=template1
* 并且对其它连接使用环境变量或者缺省值。
*
*/
if (argc > 1)
conninfo = argv[1];