1:sql脚本

create table post(
id serial primary key,
content text,
author varchar(100)
)

2:post.go

package post

import(
"fmt"
"database/sql"
_"github.com/lib/pq"
) const(
host = "192.168.72.128"
port = 5432
user = "test"
password = "test"
dbname = "testdb"
) type Post struct{
ID int
Content string
Author string
} var Db *sql.DB func init(){
var err error psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",host, port, user, password, dbname) Db, err = sql.Open("postgres", psqlInfo)
if err != nil{
panic(err)
}
} func (post *Post) GetPosts(limit int) (posts []Post, err error){
sql := "select id,content,author from post limit $1"; rows, err := Db.Query(sql, limit)
if err != nil{
return
} defer rows.Close() for rows.Next(){
post := Post{}
err = rows.Scan(&post.ID, &post.Content, &post.Author)
if err != nil{
return
}
posts = append(posts, post)
} return
} func (p *Post) GetPost(id int) (post Post, err error){
post = Post{} sql := "select id,content,author from post where id=$1" err = Db.QueryRow(sql, id).Scan(&post.ID, &post.Content, &post.Author) return
} func (post *Post) AddPost() (err error){
sql := "insert into post(content,author) values($1,$2) returning id" stmt, err := Db.Prepare(sql)
if err != nil{
return
} defer stmt.Close() err = stmt.QueryRow(post.Content, post.Author).Scan(&post.ID) return
} func (post *Post) DelPost()(err error){
sql := "delete from post where id=$1"
_,err = Db.Exec(sql, post.ID)
return
} func (post *Post) EditPost() (err error){
sql := "update post set content=$1 where id=$2"
_,err = Db.Exec(sql, post.Content, post.ID)
return
}

3:main.go

package main

import(
"fmt"
"Chapter02/post"
) func main(){
p := post.Post{
Content: "Hello java!",
Author: "王五",
} fmt.Println(p) err := p.AddPost()
if err != nil{
panic(err)
} fmt.Println(p) var posts = []post.Post{}
posts, err = p.GetPosts(10)
if err != nil{
panic(err)
}
for _,post := range posts{
fmt.Printf("ID:%d,Content:%s,Author:%s\n", post.ID, post.Content, post.Author)
} pp, err := p.GetPost(p.ID)
if err != nil{
panic(err)
}
fmt.Println(pp)
}

  

010-Go 操作PostgreSQL数据库2的更多相关文章

  1. hibernate 操作 Postgresql 数据库报 operator does not exist: integer = character varying

    网上的说法如下: Java开发Postgresql 数据库兼容应用的问题,与Oracle有一些不同: Java类型映射数据库类型的不同,Oracle jdbc驱动程序处理Java String类型可正 ...

  2. C#/Python/MATLAB操作PostgreSQL数据库

    PostgreSQL数据库是一个功能非常强大的开源数据库,支持多种SQL特性,非常好用.此外由于结合PostGIS可以实现空间数据库功能,故非常适合GIS领域的使用.本文旨在介绍C#.Python.M ...

  3. Python 操作 PostgreSQL 数据库

    我使用的是 Python 3.7.0 PostgreSQL可以使用psycopg2模块与Python集成. sycopg2是用于Python编程语言的PostgreSQL数据库适配器. psycopg ...

  4. Jmeter_实现操作postgresql数据库

    [环境] ①Jmeter版本:3.2,JDK:1.8: ②postgresql驱动包postgresql-9.3-1103.jdbc4,将该jar包置于..\apache-jmeter-3.2\lib ...

  5. 使用JPA + Eclipselink操作PostgreSQL数据库

    首先确保您已经安装了PostgreSQL.您可以参考我这篇文章PostgreSQL扫盲教程. 使用Eclipse创建一个新的JPA project: Platform选择EclipseLink,作为J ...

  6. python操作postgresql数据库

    import psycopg2 conn = psycopg2.connect(database=") cur = conn.cursor() cur.execute("CREAT ...

  7. 005-Go 操作PostgreSQL数据库

    package main import( "fmt" "database/sql" _ "github.com/lib/pq" " ...

  8. ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...

  9. Rust 连接 PostgreSQL 数据库

    这次,我们使用 postgres 这个 crate 来连接和操作 PostgreSQL 数据库. 创建好项目后,在 cargo.toml 里添加 postgres 的依赖: 首先,导入相关的类型,并创 ...

随机推荐

  1. SQL Server 2008 安装教程

    http://www.downcc.com/tech/4135.html 序列号:Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYB

  2. jQuery Pagination分页插件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 一致性Hash算法说明

    本文章比较好的说明了一致性Hash算法的概念 Hash算法一般分为除模求余和一致性Hash1.除模求余:当新增.删除机器时会导致大量key的移动2.一致性Hash:当新增.删除机器时只会影响到附近的k ...

  4. 虚拟化(三):vsphere套件的安装注意及使用

     虚拟化(一):虚拟化及vmware产品介绍 虚拟化(二):虚拟化及vmware workstation产品使用 虚拟化(五):vsphere高可用群集与容错 vsphere套件里面基本的组件有e ...

  5. SharePoint Designer 配置工作流后需要重启的问题

    前言 最近,很多朋友配置SharePoint工作流以后,用SharePoint Designer打开站点,创建SharePoint 2013 工作流的时候,都会报一个错误. 查了很多帖子,发现是个De ...

  6. Mac环境配置 - iOS开发人员 -待续

    Mac环境记录 Mac 相关 目录相关 显示: $ defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏: $ default ...

  7. SVG.js 文本绘制整理

    1.SVG.Text var draw = SVG('svg1').size(300, 300); //画文字内容展示 //var text = draw.text('中文内容测试\n换行处理'); ...

  8. Variational Inference

    作者:孙九爷链接:https://www.zhihu.com/question/41765860/answer/101915528来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  9. Guava CaseFormat

    概述 CaseFormat用来转换各种不同的编程语言间的变量名命名格式, 主要用到的方法只有一个 CaseFormat.to(CaseFormat from, String s) CaseFormat ...

  10. 第三十一章 elk(2)- 第二种架构(最常用架构)

    参考:http://linuxg.blog.51cto.com/4410110/1761757 最常用架构: 一.安装redis 1.下载:http://redis.io/download 2.解压后 ...