golang postgresql CRUD
package main import (
"database/sql"
"fmt"
"log" _ "github.com/lib/pq" // postgres driver
) // People - database
type People struct {
id int
name string
age int
} type appContext struct {
db *sql.DB
} // ConnectDB connect specify database
func connectDB(driverName string, dbName string) (c *appContext, errorMessage string) {
db, err := sql.Open(driverName, dbName)
if err != nil {
return nil, err.Error()
}
if err = db.Ping(); err != nil {
return nil, err.Error()
}
return &appContext{db}, ""
} // Create
func (c *appContext) Create() {
// get insert id
lastInsertId :=
err := c.db.QueryRow("INSERT INTO users(name,age) VALUES($1,$2) RETURNING id", "jack", ).Scan(&lastInsertId)
if err != nil {
log.Fatal(err)
}
fmt.Println("inserted id is ", lastInsertId)
} // Read
func (c *appContext) Read() {
rows, err := c.db.Query("SELECT * FROM users") if err != nil {
fmt.Println(err.Error())
return
}
defer rows.Close() for rows.Next() {
p := new(People)
err := rows.Scan(&p.id, &p.name, &p.age)
if err != nil {
fmt.Println(err)
}
fmt.Println(p.id, p.name, p.age)
}
} // UPDATE
func (c *appContext) Update() {
stmt, err := c.db.Prepare("UPDATE users SET age = $1 WHERE id = $2")
if err != nil {
log.Fatal(err)
}
result, err := stmt.Exec(, )
if err != nil {
log.Fatal(err)
}
affectNum, err := result.RowsAffected()
if err != nil {
log.Fatal(err)
}
fmt.Println("update affect rows is ", affectNum)
} // DELETE
func (c *appContext) Delete() {
stmt, err := c.db.Prepare("DELETE FROM users WHERE id = $1")
if err != nil {
log.Fatal(err)
}
result, err := stmt.Exec()
if err != nil {
log.Fatal(err)
}
affectNum, err := result.RowsAffected()
if err != nil {
log.Fatal(err)
}
fmt.Println("delete affect rows is ", affectNum)
} // Mypg - Postgresql CRUD
func main() {
c, err := connectDB("postgres", "user=user1 password=password1 dbname=exampledb")
defer c.db.Close() if err != "" {
print(err)
} c.Create()
fmt.Println("add action done!") c.Read()
fmt.Println("get action done!") c.Update()
fmt.Println("update action done!") c.Delete()
fmt.Println("delete action done!")
}
golang postgresql CRUD的更多相关文章
- golang sqlite3 CRUD
package main import ( "database/sql" "fmt" "log" _ "github.com/ma ...
- 学习(主题或切入点)checklist1
业务+技术+架构+运维+管理 技术学习:http://www.runoob.com/mongodb/mongodb-query.html 一.技术篇补充学习列表 1,mongodb(o) 2,red ...
- blog写作心得体会
虽然写blog也挺久了,写出来的东西自己回顾的时候也会怀疑读者是否能看的明白,还是有种流水账的感觉,以后希望多从读者的角度出发.下面记录一些以后写博客的注意点. 具体关于某种技术点的小知识还有碰到的各 ...
- 使用golang 编写postgresql 扩展
postgresql 的扩展可以帮助我们做好多强大的事情,支持的开发语言有lua.perl.java.js.c 社区有人开发了一个可以基于golang开发pg 扩展的项目,使用起来很方便,同时为我 ...
- postgresql一般crud存储过程参考[转]
http://blog.csdn.net/cdnight/article/details/18082255 这里是一份经过再三调试测试而成功的postgres数据库单表crud存储过程,请注意,对于多 ...
- golang自己定义数据类型查询与插入postgresql中point数据
golang自己定义数据类型查询与插入postgresql中point数据 详细代码例如以下: package main import ( "bytes" "databa ...
- .netcore2.1 使用postgresql数据库,不能实现表的CRUD问题
PostgreSQL对表名.字段名都是区分大小写的.为了兼容其他的数据库程序代码的编写,推荐使用小写加_的方式,例如:swagger_info 我们使用.netcore连接postgresql数据库时 ...
- golang web实战之一(beego,mvc postgresql)
想写个小网站,听说MVC过时了,流行MVVM,但是看了一下gin+vue+axios方式,发现还有一堆知识点要掌握,尤其是不喜欢nodejs和javascript方式的写法.算了,还是用beego来写 ...
- golang自动导入postgresql脚本
直接代码 package main import ( "fmt" "golang-objective-go/dataFoundation/dataConvert" ...
随机推荐
- 使用ThinkPHP实现附件上传
刚学的使用ThinkPHP框架简单上传附件(图片,文档,视频等文件) 首先需要了解tp框架中Upload.class.php(ThinkPHP/Library/Think/Upload,class,p ...
- ArcGIS三种方式打断相交线------Planarize Lines工具
1. 只有一个layer图层时,我们只需要选择”Planarize Lines“工具即可. (1)选择工具栏”Customize“选项: (2)选择Customize工具栏中的”Toolbars“选项 ...
- Postman Google浏览器离线安装Postman插件
Google浏览器离线安装Postman插件 by:授客 QQ:1033553122 解决无法通打开谷歌web商店安装Postman插件的问题,文章参考网络. 测试环境:ChromeStandalon ...
- Android--仿一号店货物详情轮播图动画效果
还不是很完全,目前只能点中间图片才能位移,图片外的其他区域没有..(属性动画),对了,图片加载用得是facebook的一款android图片加载库,感觉非常NB啊,完爆一切. 1.先看布局 <? ...
- 风险指针(Hazard Pointer) 内存空间共享模型
WiredTiger是一种高性能的开源存储引擎,现已在MongoDB中作为内模式应用.WiredTiger支持行存储.列存储两种存储模式,采用LSM Tree方式进行索引记录 WiredTiger支持 ...
- 解决 ModuleNotFoundError: No module named 'pip'
安装其它python包时,提示说 pip 10.0.1可用,就更新了一下,但是 更新过程中出现了错误,如图所示 因为这个错误导致 pip找不到, 可以首先执行 python -m ensurepip ...
- PHP剔除删除掉危险字符
本文出至:新太潮流网络博客 /** * [剔除掉危险字符] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB http://blog.i ...
- SHELL调用存储过程
1.测试用例 #!/bin/sh #日期变量可设成传入参数 #exec_date=`date +"%Y%m%d"` # -S 设置无提示模式, 该模式隐藏命令的 SQL*Plus ...
- 【SPL标准库专题(5)】 Datastructures:SplStack & SplQueue
这两个类都是继承自SplDoublyLinkedList,分别派生自SplDoublyLinkedList的堆栈模式和队列模式:所以放在一起来介绍: 堆栈SplStack # 类摘要 SplStack ...
- oracle EBS rtf报表不能输出模板样式
1.需要定义中文的数据定义 2.缺少文件 cd $ADMIN_SCRIPTS_HOME prefs.ora 3.查看文档 文档 ID 1059712.1 (1)请求模版显示不出来 解决:模版定义中模 ...