Postgresql使用笔记
2015-06-30 15:50
302 查看
0.下载&安装
系统,虚拟机中的centos6.3. 直接yum进行下载,下载完要进行数据库初始化操作,还有修改登录数据库的验证方式,还有数据库不能用root用户进行数据库管理。
安装需要选择性安装,postgresql, postgresql-devel, postgresql-libs, postgresql-libs, posgresql-test, postgresql-server.
1.一些用到的命令
2.开发
参考资料:
http://www.linuxidc.com/Linux/2014-09/106772.htm
系统,虚拟机中的centos6.3. 直接yum进行下载,下载完要进行数据库初始化操作,还有修改登录数据库的验证方式,还有数据库不能用root用户进行数据库管理。
安装需要选择性安装,postgresql, postgresql-devel, postgresql-libs, postgresql-libs, posgresql-test, postgresql-server.
1.一些用到的命令
使用yum安装好postgresql后,要进行初始化 #service postgresql initdb 修改数据库配置文件 #vim /var/lib/pgsql/data/postgresql.conf 主要修改这几个 listen_addresses = '*' port = 5432 其他按需进行修改 启动数据库 #service postgresql start 或 #systemctl start postgresql.service 切换用户并登录,修改密码 #su postgres #psql #alter user postgres with password '' ; 出现这个错误 psql: 致命错误: 用户 "postgres" Ident 认证失败 修改认证文件 #vim /var/lib/pgsql/data/pg_hba.conf 最后几行配置 修改认证METHOD的ident为trust,实现用帐号密码来访问数据库。 最后重启服务 #service postgresql restart
2.开发
#include <stdio.h> #include <libpq-fe.h> int postgresql_insert(PGconn *conn,char *sql); int postgresql_update(PGconn *conn,char *sql); int postgresql_delete(PGconn *conn,char *sql); int postgresql_select(PGconn *conn,char *sql); int postgresql_count(PGconn *conn,char *sql); int main() { int i; int ret = 0; //for(i=0;i<10000;i++) { char sql[512]; const char *conninfo="hostaddr=127.0.0.1 port=5432 user=postgres dbname=postgres"; PGconn * conn; //conn = PQsetdb(pghost,pgport,pgoptions,pgtty,dbName); conn = PQconnectdb(conninfo); if(PQstatus(conn) == CONNECTION_BAD) { fprintf(stderr,"%s\n",PQerrorMessage(conn)); PQfinish(conn); return 0; } sprintf(sql,"insert into test(id,name,pwd) values(1,'root','pwddddd'); "); postgresql_insert(conn,sql); sprintf(sql,"update test set id=2,name='caonima',pwd='中文' where pwd='pwddd'; "); postgresql_update(conn,sql); sprintf(sql,"select * from test;"); postgresql_select(conn,sql); sprintf(sql,"select * from test;"); ret = postgresql_count(conn,sql); printf("count --- > %d.\n",ret); sprintf(sql,"select * from logs; "); ret = postgresql_count(conn,sql); printf("count --- > %d.\n",ret); sprintf(sql,"delete from test where id=1; "); postgresql_delete(conn,sql); PQfinish(conn); } return 0; } int postgresql_count(PGconn *conn,char *sql) { PGresult *res; int ret; res = PQexec(conn,sql); if(!res || PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr,"Select Error.\n"); PQclear(res); return -1; } ret = PQntuples(res); PQclear(res); return ret; } int postgresql_select(PGconn *conn,char *sql) { PGresult *res; int nFields=0; int i,j; res = PQexec(conn,sql); //select 查询自带事务 if(!res || PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr,"Select Error.\n"); PQclear(res); return -1; } nFields = PQnfields(res); for(i=0;i<nFields;i++) { printf("%-15s",PQfname(res,i)); } printf("\n"); for(i=0;i<PQntuples(res);i++) { for(j=0;j<nFields;j++) { printf("%-15s",PQgetvalue(res,i,j)); } printf("\n"); } printf("\n\n"); PQclear(res); return 0; } int postgresql_delete(PGconn *conn,char *sql) { int ret = postgresql_insert(conn,sql); return ret; } int postgresql_update(PGconn *conn,char *sql) { int ret = postgresql_insert(conn,sql); return ret; } int postgresql_insert(PGconn *conn,char *sql) { PGresult * res; res = PQexec(conn,"BEGIN"); //显式事务 if(!res || PQresultStatus(res) != PGRES_COMMAND_OK) { PQclear(res); return -1; } //should PQclear PGresult whenever it is no longer needed to avoid memory leaks. PQclear(res); //每次这个res的PGresult结合都要进行关闭,防止内存泄漏 res = PQexec(conn,sql); if(!res || PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr,"%s\n",PQerrorMessage(conn)); PQclear(res); return -1; } PQclear(res); res = PQexec(conn,"COMMIT"); PQclear(res); return 0; }
# gcc -ggdb test.c -o test -lpq #我 postgresql 安装后有自带这个libpq库
参考资料:
http://www.linuxidc.com/Linux/2014-09/106772.htm
相关文章推荐
- sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询
- 导出遇到 ORACLE 错误 1455:转换列溢出整数数据类型
- MySQL中如何实现select top n
- oracle函数Lpad与Rpad
- oracle 抛出自定义错误(网上找的例子)
- MySQL数据类型
- mysql 字符集&校验规则
- 关于数据库中查找的方法实例
- SQL2008 创建定时任务作业
- Ubuntu下用apt-get安装最新版本的Redis
- mysqld_multi配置MySQL多实例(编译安装的mysql)
- SqlServer2008维护计划(图解)
- 【quartz】 数据库方式管理任务
- 清理oracle的归档日志
- 数据库触发联合索引的几个条件
- PostgreSQL安装
- Oracle里面的using作用(用于动态sql绑定参数)
- mysql 锁查看
- mysql5.7二进制包安装
- Oracle创建两表关联查询的视图