C程序对psql数据库操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的数据执行过插入、更新、删除后的表内容,如上所示。