PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。
PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源代码是免费提供的。
PostgreSQL是跨平台的,可以在许多操作系统上运行,如Linux,FreeBSD,OS X,Solaris和Microsoft Windows等。
下面主要讲讲PostgreSQL在Go语言开发中的应用
首先创建相应的数据库和表
CREATE DATABASE medex
WITH OWNER = kekang
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'C'
LC_CTYPE = 'C'
CONNECTION LIMIT = -1;
CREATE TABLE public.student
(
uid integer NOT NULL DEFAULT nextval('student_uid_seq'::regclass),
name character(256),
sex character(5),
address character(256),
age smallint,
CONSTRAINT uid PRIMARY KEY (uid)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.student
OWNER TO kekang;
一、数据库的链接
db, err := sql.Open("postgres", "user=kekang password=kkwangbiao dbname=medex sslmode=disable")
二、数据库的插入
func instertToPostgresDB(db *sql.DB) {
stmt, err := db.Prepare("INSERT INTO student(name,sex,address,age) VALUES($1,$2,$3,$4)")
_, err = stmt.Exec("zhangcheng", "F", "yuuyyuu小学", 2)
}
三、数据库的更新
func updatePostgresDB(db *sql.DB) {
stmt, err := db.Prepare("update student set name=$1 where uid=$2")
checkErr(err)
res, err := stmt.Exec("zhangsanup", 1)
checkErr(err)
affected, err := res.RowsAffected()
checkErr(err)
fmt.Println(affected)
}
四、数据库的查询
func selectFromPostgresDB(db *sql.DB) {
rows, err := db.Query("select * from student")
for rows.Next() {
var uid int
var name string
var sex string
var address string
var age int
err = rows.Scan(&uid, &name, &sex, &address, &age)
checkErr(err)
fmt.Println(uid)
fmt.Println(name)
fmt.Println(sex)
fmt.Println(address)
fmt.Println(age)
}
}
五、数据库的删除
func deleteFromPostgresDB(db *sql.DB) {
stmt, err := db.Prepare("delete from student where uid=$1")
checkErr(err)
res, err := stmt.Exec(1)
checkErr(err)
affect, err := res.RowsAffected()
fmt.Println(affect)
}
方法中用到的自定义函数
func checkErr(err error) {
if err != nil {
panic(err)
}
}
同mySQL的比较
PostgreSQL是通过$1,$2这种方式来指定要传递的参数,
MySQL中通过?方式来传递参数,
在sql.Open函数中的dsn信息的格式也与MySQL的驱动中的dsn格式不一样