Go语言操作PostgreSQL数据库——学习笔记

前端之家收集整理的这篇文章主要介绍了Go语言操作PostgreSQL数据库——学习笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Go实现的支持Postgresql的驱动有很多,但是github.com/lib/pq是目前使用最广泛的,也是最稳定的一个Go语言实现的Postgresql驱动。这里,我就使用github.com/lib/pq(以下简称pq)来进行演示。

首先需要创建一个数据库表,语句如下:

CREATE TABLE public."user"
(
  id serial NOT NULL,name character(100) COLLATE pg_catalog."default" NOT NULL,age integer NOT NULL,CONSTRAINT user_pkey PRIMARY KEY (id)
)
WITH (
  OIDS = FALSE
)
TABLESPACE pg_default;


ALTER TABLE public."user"
  OWNER to postgres;

下面演示下简单的增删改查。代码如下:
package main

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

func checkErr(err error)  {
	if err!=nil{
		fmt.Println(err)
	}
}

func main()  {

	//插入数据
	db,err:=sql.Open("postgres","host=127.0.0.1 port=5432 user=postgres password=1234567 sslmode=disable")
	checkErr(err)
	stmt,err:=db.Prepare("INSERT INTO PUBLIC.user(name,age) VALUES ($1,$2) RETURNING id")
	checkErr(err)
	res,err:=stmt.Exec("jack",23)
	//受影响行数
	id,err:=res.RowsAffected()
	checkErr(err)
	fmt.Println(id)

	//修改数据
	stmt,err=db.Prepare("UPDATE  PUBLIC.user set name=$1 where id=$2")
	checkErr(err)
	res,err =stmt.Exec("hellen",1)
	checkErr(err)
	affect,err:=res.RowsAffected()
	checkErr(err)
	fmt.Println(affect)

	//查询数据
	rows,err:=db.Query("SELECT * FROM PUBLIC.user")
	checkErr(err)
	for rows.Next(){
		var id int
		var name string
		var age int
		err=rows.Scan(&id,&name,&age)
		checkErr(err)
		fmt.Printf("%d  %s  %d\n",id,name,age)
	}

	//删除数据
	stmt,err=db.Prepare("DELETE FROM PUBLIC.user where id=$1")
	checkErr(err)

	res,err=stmt.Exec(10)
	res,err=stmt.Exec(11)
	res,err=stmt.Exec(12)
	checkErr(err)
	affect,err=res.RowsAffected()
	fmt.Println(affect)
	db.Close()



}


猜你在找的Postgre SQL相关文章