首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux下用C语言连接免费数据库PostgreSQL的有关问题

2012-03-02 
Linux下用C语言连接免费数据库PostgreSQL的问题我输入了如下代码:#includestdio.h#includestdlib.h#in

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];
else
conninfo = "dbname = template1 ";




/* 和数据库建立链接 */
conn = PQconnectdb(conninfo);

[解决办法]
EXEC SQL CREATE TABLE cPSQL(number int ,character char);
EXEC SQL COMMIT;
====
这是嵌入式SQL的语法, 可以参考Postgres的文档:
http://www.postgresql.org/docs/8.2/interactive/ecpg-connect.html

热点排行