C程序对psql数据库操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C程序对postgreSQL数据库操作文档1、以postgres 用户登录Linux。

[root@host ~]# su - postgres

2、建立数据库test_db1.

bash-4.1$ createdb test_db1

3、连接到数据库,建立表test。

-bash-4.1$ psql test_db1

psql (8.4.8)

Type "help" for help.

test_db1=# create table test

test_db1-# (

test_db1(# name CHAR(10),

test_db1(# age INTEGER,

test_db1(# sex CHAR(2)

test_db1(# );

CREATE TABLE

4、插入测试用数据。

test_db1=# insert into test values('奥巴马',45,'男');

test_db1=# insert into test values('本拉登',65,'男');

test_db1=# insert into test values('小布什',40,'男');

5.程序源码psql.c。

#include

#include

int psql_insert(void);

int psql_update(void);

int psql_dele(void);

int psql_show(void);

PGconn *conn;

PGresult *res;

int main()

{

char *pghost = NULL;

char *pgport =NULL;

char *pgoptions =NULL;

char *pgtty = NULL;

char *dbname ="test_db"; //数据库名

conn = PQsetdb(pghost,pgport,pgoptions,pgtty,dbname);

if (PQstatus(conn) == CONNECTION_BAD)

{

fprintf(stderr,"Connection to database '%s' failed1!\n",dbname);

PQfinish(conn);

return 0;

}

psql_insert(); //插入数据

psql_update( ); //更新数据

psql_dele(); //删除数据

psql_show(); //查询并打印表中内容

PQfinish(conn);

PQclear(res);

return 0;

}

/*插入数据函数*/

int psql_insert(void)

{

res = PQexec(conn,"insert into test values('老布什',36,'男')");

if( PQresultStatus(res) != PGRES_COMMAND_OK)

{

fprintf(stderr,"Exec Query Failed3!\n");

PQclear(res);

return 0;

}

}

/*更新数据函数*/

int psql_update(void)

{

res = PQexec(conn,"UPDATE test SET sex='女' WHERE name ='奥巴马'");

if( PQresultStatus(res) != PGRES_COMMAND_OK)

{

fprintf(stderr,"Exec Query Failed2!\n");

PQclear(res);

return 0;

}

}

/*删除数据函数*/

int psql_dele(void)

{

res = PQexec(conn,"DELETE FROM test WHERE name='frank'");

if( PQresultStatus(res) != PGRES_COMMAND_OK)

{

fprintf(stderr,"Exec Query Failed2!\n");

PQclear(res);

return 0;

}

}

/*查询显示函数*/

int psql_show(void)

{

int i = 0,t = 0,s,k;

res = PQexec(conn,"SELECT * FROM test");

if( PQresultStatus(res) != PGRES_TUPLES_OK)

{

fprintf(stderr,"Exec Query Failed4!\n");

PQclear(res);

return 0;

}

i = PQntuples(res);//取得查询结果记录数量

t = PQnfields(res);//取得字段数量

for(s=0; s

{

for (k = 0; k

{

printf("%s",PQgetvalue(res,s,k));

printf(" ");

}

printf("\n");

}

}

6、编译C代码。

[root@host 0616]# gcc -Ldir /usr/lib/libpq.so psql.c -o test

7、以postgres用户登陆linux,运行可执行文件testt。

[root@host pgsql]# su postgres

bash-4.1$ ./test

本拉登65 男

小布什40 男

老布什36 男

奥巴马45 女

8、打印出了对数据库中表test的数据执行过插入、更新、删除后的表内容,如上所示。

相关文档
最新文档