学习笔记之postgresql

 

/*************************************************************************
创建人:LYK 创建时间:2019/05/05 14:47
IDE: vs2013 库版本:32位 静态库
数据库管理平台 pgAdmin III -- postgresql

 

注意事项:
1,添加头文件 及库文件
libpq-fe.h libpq.lib

 

2,电脑开启postgresql数据库服务
**************************************************************************/

void pg_test::pg_init()
{char *pghost = "127.0.0.1",*pgport = {0},*pgoptions = { 0 },*pgtty = { 0 };char  *dbName = "db_cctv";int  nFields = 0;int  i = 0;int j =0;#ifdef DEBUGFILE    *debug;
#endif  /* DEBUG */PGconn    *conn = {0};PGresult   *res = { 0 };/** Begin by setting the parameters for a backend connection.* If the parameters are NULL, the system tries to use* reasonable defaults by looking up environment variables* or, failing that, using hardwired constants.*/const char *conninfo = "postgresql://dxh:123456@localhost:5432/db_cctv";/* make a connection to the database *///conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);conn = PQconnectdb(conninfo);/* check to see that the backend connection was successfully made */if (PQstatus(conn) == CONNECTION_BAD){fprintf(stderr, "Connection to database '%s' failed.\n", dbName);fprintf(stderr, "%s", PQerrorMessage(conn));exit_nicely(conn);}#ifdef DEBUGdebug = fopen("/tmp/trace.out", "w");PQtrace(conn, debug);
#endif  /* DEBUG *//* start a transaction block */res = PQexec(conn, "BEGIN");if (PQresultStatus(res) != PGRES_COMMAND_OK){fprintf(stderr, "BEGIN command failed\n");PQclear(res);exit_nicely(conn);}/** should PQclear PGresult whenever it is no longer needed* so as to avoid memory leaks*/PQclear(res);/** fetch instances from the pg_database, the system catalog of* databases*/res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database");if (PQresultStatus(res) != PGRES_COMMAND_OK){fprintf(stderr, "DECLARE CURSOR command failed\n");PQclear(res);exit_nicely(conn);}PQclear(res);res = PQexec(conn, "FETCH ALL in myportal");if (PQresultStatus(res) != PGRES_TUPLES_OK){fprintf(stderr, "FETCH ALL command didn't return tuples properly\n");PQclear(res);exit_nicely(conn);}/* first, print out the attribute names */nFields = PQnfields(res);for (i = 0; i < nFields; i++)printf("%-15s", PQfname(res, i));printf("\n\n");/* next, print out the instances */for (i = 0; i < PQntuples(res); i++){for (j = 0; j < nFields; j++)printf("%-15s", PQgetvalue(res, i, j));printf("\n");}PQclear(res);/* close the portal */res = PQexec(conn, "CLOSE myportal");PQclear(res);/* end the transaction */res = PQexec(conn, "END");PQclear(res);/* close the connection to the database and cleanup */PQfinish(conn);#ifdef DEBUGfclose(debug);
#endif  /* DEBUG */return ;
}

 

--创建用户dbuser 
--CREATE USER dbuser WITH PASSWORD 'password';--创建数据库
--CREATE DATABASE exampledb OWNER dbuser;--将数据库的所有权限都赋予给用户dbuser
--否则dbuser只能登陆,无法操作数据库
--GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;--数据库操作
--CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);--插入数据,注意字符串使用单引号,使用双引号会报错
--INSERT INTO user_tbl(name, signup_date) VALUES('张三','2019-5-6');--选择记录,显示表的所有记录
--SELECT * FROM user_tbl;--数据更新
--UPDATE user_tbl set name = '李四' WHERE name = '张三';--删除数据
--DELETE FROM user_tbl WHERE name = '李四';--添加栏位,新增列
--ALTER TABLE user_tbl ADD email VARCHAR(40); --更新结构,修改相关列的属性
--ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;--更改栏名
--ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;--删除栏
--ALTER TABLE user_tbl DROP COLUMN email;--更改表名
--ALTER TABLE user_tbl RENAME TO backup_tbl;SELECT * FROM backup_tbl;

 

转载于:https://www.cnblogs.com/luoyankuan/p/10813086.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Delphi关于多线程同步的一些方法

(注&#xff1a;本文为转载 http://hi.baidu.com/navy1130/blog/item/468fcdc448794fce38db49ee.html)线程是进程内一个相对独立的、可调度的执行单元。一个应用可以有一个主线程&#xff0c;一个主线程可以有多个子线程&#xff0c;子线程还可以有自己的子线程&#xff0c;这…

自定义Cassandra数据类型

在博客文章《 从Java连接到Cassandra》中 &#xff0c;我提到了用Java 实现的Cassandra Java开发人员的一个优势是能够创建自定义 Cassandra数据类型 。 在这篇文章中&#xff0c;我将详细介绍如何执行此操作。 Cassandra具有许多内置的数据类型 &#xff0c;但是在某些情况下…

Linux下如何查看版本信息

Linux下如何查看版本信息 Linux下如何查看版本信息&#xff0c; 包括位数、版本信息以及CPU内核信息、CPU具体型号等等&#xff0c;整个CPU信息一目了然。一些常用的 Linux 命令 1、# uname &#xff0d;a &#xff08;Linux查看版本当前操作系统内核信息&#xff09; [hadoopa…

Docker的安装及注意事项

Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#…

基于CSS的个人网页

前端时间做的CSS作业&#xff1a;基于CSS的个人网页 基于CSS的个人网页 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>吴广林的个人博客</title><link rel"styles…

不重复int数组里找不存在的值

有这么一道题&#xff0c;一个int数组叫A&#xff0c;里面的数是不重复的&#xff0c;从中拿出一个值&#xff0c;剩下的数组就B&#xff0c;问拿出的是哪个数。 一般人都能想到把A数组值相加&#xff0c;假设和为sum1&#xff0c;再把B数组值相加&#xff0c;设其和为sum2&…

Java验证(javafx)

验证是核心javafx框架所缺少的一件事。 为了填补这一空白&#xff0c; controlsfx中已经存在一个第三方验证库 。 但是&#xff0c;我有一个问题&#xff1a;它不是在考虑FXML的情况下创建的。 这并不是说它不是一个很好的库&#xff0c;只是错过了这个细节&#xff0c;对我来说…

WAP自助建站 我编程之路的启蒙

如题所示的这篇文章是我心血来潮在网上搜索到的&#xff0c;写的挺让我感同身受的&#xff0c;不妨先看一下原文吧。 原文 不知是偶然还是“冥冥定数”&#xff0c;最后一次访问娃派建站&#xff08;wap.ai&#xff09;已有数十月之久了&#xff0c;突然心血来潮想看看曾经的建…

React事件绑定几种方法测试

前提 es6写法的类方法默认没有绑定this&#xff0c;不手动绑定this值为undefined。 因此讨论以下几种绑定方式。 一、构造函数constructor中用bind绑定 class App extends Component {constructor (props) {super(props)this.state {t: t}// this.bind1 this.bind1.bind(…

初始socket模块和巧解粘包问题

1.什么是socket&#xff1f; 两个进程如果需要进行通讯最基本的一个前提能够唯一的标示一个进程&#xff0c;在本地进程通讯中我们可以使用PID来唯一标示一个进程&#xff0c;但PID只在本地唯一&#xff0c;网络中的两个进程PID冲突几率很大&#xff0c;这时候我们需要另辟它径…

100325 雨

回家以后怎么样&#xff1f; 感冒没有严重吧&#xff1f; 你也多喝水 我好些了 鼻涕不像昨天那么多了 就是嗓子疼 药吃了 喝了不少水了转载于:https://www.cnblogs.com/loverain/archive/2010/03/25/1694567.html

Java的挥发性修饰符

不久前&#xff0c;我编写了一个Java servlet过滤器&#xff0c;该过滤器在其init函数中加载配置&#xff08;基于web.xml的参数&#xff09;。 筛选器的配置缓存在私有字段中。 我在字段上设置了volatile修饰符。 后来&#xff0c;当我检查Sonar公司以查看是否在代码中发现任…

webpack常用loader和plugin及打包速度优化

优化 或 也可以用&#xff1a; 备用&#xff1a; 慎用的配置&#xff0c;用的不好会增加打包时间&#xff1a; 代码丑化插件&#xff1a; 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

nvl 函数

nvl(oie.is_eval,N) <> Y 理解成 oie.is_eval <> Y 转载于:https://www.cnblogs.com/wangchuanfu/p/10818274.html

在自定义HttpHandler中如何使用Session

今天我写了一段程序在HttpHandler中使用Session。结果Session对象报错&#xff0c;“未将对象引用设置到对象的实例”&#xff0c;我郁闷半天&#xff0c;不知道怎么回事。结果我google了一下&#xff0c;原来也有人碰到过这种情况哦。呵呵。网上也有很多人说出了这些问题。解决…

SSH登录太慢(等很久才提示输入密码)的问题

SSH登录太慢(等很久才提示输入密码)的问题 SSH 登录太慢可能是 DNS 解析的问题&#xff0c;默认配置下 sshd 初次接受 ssh 客户端连接的时候会自动反向解析客户端 IP 以得到 ssh 客户端的域名或主机名。 如果这个时候 DNS 的反向解析不正确&#xff0c;sshd 就会等到 DNS 解析超…

开发Eclipse插件

最近&#xff0c;我开始与团队合作开发Eclipse插件。 团队开发了一个很棒的插件&#xff0c;可以实现预期的目的。 因此&#xff0c;我签出了源并尝试构建它。 项目源包含所有必需的库&#xff0c;并且只能在Eclipse中构建。 在当今不断交付的世界中&#xff0c;这是一个主要障…

react-native 热更新react-native-pushy集成遇到的问题

主要步骤按官方文档实现&#xff0c;这里只记录遇到的一些小坑 官方文档 run-android时NDK报错 前提是NDK已安装并且环境变量已设置 根据报错提示在 android/local.properties文件里加入ndk.dir~/Library/Android/android-ndk-r10e //这里改成你自己的ndk路径 cxxbridge找…

[转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...

[转]在资源管理器中使鼠标右键增加一个命令&#xff0c;运行cmd&#xff0c;同时使得当前路径为资源管理器当前的目录 http://www.cnblogs.com/skywind/archive/2009/05/22/1487138.html 1,找开注册表编辑器&#xff1b; 2,找到HKEY_CLASSES_ROOT\Folder\shell&#xff1b; 3,在…

Keil5 仿真测试出现Cannot Load Flash Device Description 解决方法

1.用ST的烧录软件检测&#xff0c;可以烧录对应的Hex文件。 2.点击魔术棒&#xff0c;Debug选项卡检测芯片型号是否和当前芯片对应 3.在Flash Download选项卡中检查发现没有对应的芯片型号 4.点击Add 选项&#xff0c;选择对应的Flash类型如图&#xff1a; 添加Flash类型后&…