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

来源:互联网 发布:c语言中flag 编辑:程序博客网 时间:2024/05/18 02:39

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 mainimport ("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 intvar name stringvar age interr=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()}


 
原创粉丝点击