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];