先在PostgreSQL数据库中建一个表,可以使用PostgreSQL官方的pgAdmin来完成:

CREATE TABLE userinfo
(
uid serial NOT NULL,
username character varying(100) NOT NULL,
departname character varying(500) NOT NULL,
Created date,
CONSTRAINT userinfo_pkey PRIMARY KEY (uid)
)
WITH (OIDS=FALSE); CREATE TABLE userdeatail
(
uid integer,
intro character varying(100),
profile character varying(100)
)
WITH(OIDS=FALSE);

然后运行以下代码,实现连接数据库和增删查改,请自行更改参数配置部分:

package main

import (
"database/sql"
"fmt" _ "github.com/lib/pq"
) var db *sql.DB func sqlOpen() {
var err error
db, err = sql.Open("postgres", "port=5433 user=postgres password=123456 dbname=ficow sslmode=disable")
//port是数据库的端口号,默认是5432,如果改了,这里一定要自定义;
//user就是你数据库的登录帐号;
//dbname就是你在数据库里面建立的数据库的名字;
//sslmode就是安全验证模式; //还可以是这种方式打开
//db, err := sql.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full")
checkErr(err)
}
func sqlInsert() {
//插入数据
stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")
checkErr(err) res, err := stmt.Exec("ficow", "软件开发部门", "2017-03-09")
//这里的三个参数就是对应上面的$1,$2,$3了 checkErr(err) affect, err := res.RowsAffected()
checkErr(err) fmt.Println("rows affect:", affect)
}
func sqlDelete() {
//删除数据
stmt, err := db.Prepare("delete from userinfo where uid=$1")
checkErr(err) res, err := stmt.Exec(1)
checkErr(err) affect, err := res.RowsAffected()
checkErr(err) fmt.Println("rows affect:", affect)
}
func sqlSelect() {
//查询数据
rows, err := db.Query("SELECT * FROM userinfo")
checkErr(err) println("-----------")
for rows.Next() {
var uid int
var username string
var department string
var created string
err = rows.Scan(&uid, &username, &department, &created)
checkErr(err)
fmt.Println("uid = ", uid, "\nname = ", username, "\ndep = ", department, "\ncreated = ", created, "\n-----------")
}
}
func sqlUpdate() {
//更新数据
stmt, err := db.Prepare("update userinfo set username=$1 where uid=$2")
checkErr(err) res, err := stmt.Exec("ficow", 1)
checkErr(err) affect, err := res.RowsAffected()
checkErr(err) fmt.Println("rows affect:", affect)
}
func sqlClose() {
db.Close()
}
func checkErr(err error) {
if err != nil {
panic(err)
}
} func sqlTest() { sep := "----------\n"
sqlOpen()
println(sep, "*sqlOpen") sqlSelect()
println(sep, "*sqlSelect") sqlInsert()
sqlSelect()
println(sep, "*sqlInsert") sqlUpdate()
sqlSelect()
println(sep, "*sqlUpdate") sqlDelete()
sqlSelect()
println(sep, "*sqlDelete") sqlClose()
println(sep, "*sqlClose")
} func main() { sqlTest()
}

  

相关链接:

可以查看这个驱动库的文档进行学习: https://godoc.org/github.com/lib/pq

另外,还要感谢这位作者的教程: http://www.cnblogs.com/songxingzhu/p/5024517.html


转载请注明出处:http://www.cnblogs.com/ficow/p/6537238.html ,谢谢!

Go 连接PostgreSQL数据库的更多相关文章

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

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

  2. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  3. Entity Freamwork 6连接PostgreSql数据库

    原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015  Update 1   Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...

  4. Abp.NHibernate连接PostgreSQl数据库

    Abp.NHibernate动态库连接PostgreSQl数据库 初次接触Abp框架,其框架中封装的操作各类数据的方法还是很好用的,本人还在进一步的学习当中,并将利用abp.NHibernate类库操 ...

  5. typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库

    接上一篇,这里使用 sequelize 来连接 postgresql 数据库 1.安装 sequelize,数据库驱动 pg yarn add sequelize sequelize-typescri ...

  6. msf连接PostgreSQL数据库

    一.启动PostgreSQL服务######################################################################?root@root:~# ...

  7. powerdesigner连接postgresql数据库生成pdm及word文档

    1.准备软件: powerdesigner165与postgresql的驱动:psqlodbc_11_01_0000 2.安装并破解完成powerdesigner165 参看链接:https://ww ...

  8. 建立安全SSL连接PostgreSQL数据库服务器

    建立安全SSL连接PostgreSQL数据库服务器当前物联网的挑战之一就是提供最高的安全级别.这就是为什么需要开启SSL连接到 PostgreSQL. 当你想要安全的存储数据到PostgreSQL数据 ...

  9. python连接postgresql数据库

    python可以通过第三方模块连接postgresql. 比较有名的有psycopg2  和python3-postgresql (一)psycopg2 ubuntu下安装 sudo apt-get ...

  10. 连接postgresql数据库

    初装postgresql数据库会产生默认的数据库用户postgres和同名的数据库.但是我的linux用户是jm,两者不一致,连不上数据库.于是先把linux用户切换为postgres.(数据库会为l ...

随机推荐

  1. Spring Boot中验证码实现kaptcha

    要生成验证码网上的方案比较多,基本是基于两大类:1为自定义生成,操作用Image类,2为kaptcha生成,有模糊算法. 当然也可以直接交由前端进行处理 1.基于kaptcha 首先不要怀疑的是报名是 ...

  2. org.hibernate.AnnotationException: No identifier specified for entity:

    使用hibernate的e-r映射pojo类的时候遇到org.hibernate.AnnotationException: No identifier specified for entity的异常, ...

  3. [Tools] Create a Chrome Extension

    Creating a Chrome extension requires a manifest.json file which defines how your extension will beha ...

  4. OSX: 第三方部署Profile的方法和比較

    眼下至少有三个第三方部署Profile的方法. 一个Profile Handler, 是利用Launchd对制定文件夹改变而激活的机制,把须要的profiles文件斗存放在制定目标机器的文件夹内,系统 ...

  5. SQL 连接(JOIN)

    SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来. SQL JOIN SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 最常见的 JO ...

  6. JS地区四级级联

    <script type="text/javascript" src="../js/jsAddress.js"></script> &l ...

  7. Struts2框架起源

    曾经也用过S2SH框架做过几个项目,都不是工作中的,学习WEB开发的时候接触的第一套框架也是S2SH,可是工作之后一直没实用到S2SH 框架进行开发. 感觉曾经用这个框架的时候根本没有深入去了解这个框 ...

  8. struts2的文件上传机制

    Struts2的上传(基本流程例如以下) 1.Struts2默认採用了apache commons-fileupload 2.Struts2支持三种类型的上传组件 3.须要引入commons-file ...

  9. Eclipse导入项目: No projects are found to import

    Eclipse导入项目: No projects are found to import  如果发导入工程import的时候,出现”No projects are found to import” 的 ...

  10. JAVA泛型类

    泛型是JDK 5.0后出现新概念,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. 泛型类引入的好处不 ...