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. DroidGap

    import com.phonegap.DroidGap;       import android.app.Activity;   import android.os.Bundle;       p ...

  2. 用UICollectionView实现无限轮播图

    用UICollectionView实现无限轮播图 效果 源码 https://github.com/YouXianMing/Animations 细节

  3. LaTeX技巧24:LaTeX常用命令集锦

    \hyphenation{word list} %断字命令:\showthe\topmargin %显示某个参数的数值或者内容: 在tex编译过程中出现行溢出(overflow hbox)是由于断字程 ...

  4. jQuery中attr和prop方法的区别说明

    jquery中attr和prop的基本区别可以理解为:如果是内置属性,建议用prop,如果是自定义的建议用attr. 例如 <input type=check  node=123 id=ck & ...

  5. ASP.NET MVC 中使用JavaScriptResult asp.net mvc 返回 JavaScript asp.mvc 后台返回js

    return this.Content("<script>alert('暂无!');window.location.href='/Wap/Index';</script&g ...

  6. 【UOJ Easy Round #1】

    数论/Trie/并查集 猜数 这题我是这样分析的…… $a*b=g*l=n=k^2 \ and \ (g|a,g|b) \Rightarrow (g*a')*(g*b' )=g*l=k^2 \\ \R ...

  7. hdu 1038 Biker&#39;s Trip Odometer(水题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1038 Biker's Trip Odometer Time Limit: 2000/1000 MS ...

  8. ASP.NET MVC:WebViewPage.cs

    ylbtech-funcation-Utility: ASP.NET MVC:WebViewPage.cs 表示呈现使用 ASP.NET Razor 语法的视图所需的属性和方法. 1.A,WebVie ...

  9. C#操作json类型数据

    将对象序列化为 JavaScript 对象表示法 (JSON),并将 JSON 数据反序列化为对象. 此类不能继承. // msdn 例子: namespace SL_DataContractJson ...

  10. T 分布(近似标准正态分布)

    1.1      定义 定义:假设X服从标准正态分布N(0,1),Y服从卡方分布,那么的分布称为自由度为n的t分布,记为. T分布密度函数其中,Gam(x)为伽马函数. 可用于两组独立计量资料的假设检 ...