• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go学习笔记-使用MySQL数据库

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

2017-12-28 15:17:31 

 

Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常 用的有如下几种:

 

  1. https://github.com/Go-SQL-Driver/MySQL 支持database/sql,全部采用go写。
  2. https://github.com/ziutek/mymysql 支持database/sql,也支持自定义的接口,全部采用go写。
  3. https://github.com/Philio/GoMySQL 不支持database/sql,自定义接口,全部采用go写。

 

接下来的例子主要以第一个驱动为例,也推荐大家采用它,主要理由:这个驱动比较新,维护的比较好,完全支持database/sql接口 支持keepalive,保持长连接。

 

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/Go-SQL-Driver/MySQL"
	"os"
)

func checkErr(err error) {
	if err != nil {
		fmt.Println("Error is ", err)
		os.Exit(-1)
	}
}

// sql.Open()函数用于打开数据库驱动,Go-SQL-Driver中注册了mysql这个数据库驱动,第二个参数是DNS,配置数据库信息
// db.Prepare()函数用来返回准备要执行的sql操作,返回准备完毕状态
// db.Query() 函数用来直接执行Sql返回Rows结果
// stmt.Exec() 函数用来执行stmt准备好的SQL

func main() {
	// sql.Open("mysql", "用户名:密码@tcp(IP:端口)/数据库?charset=utf8")
	db, err := sql.Open("mysql", "root:xxxxx@tcp(xxxxxxxx:3306)/test?charset=utf8")
	checkErr(err)

	fmt.Println("链接数据库test")

	//插入
	stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
	checkErr(err)
	res, err := stmt.Exec("XXXXX", "Gopher", "2012-12-09")
	checkErr(err)
	id, err := res.LastInsertId()
	checkErr(err)
	fmt.Println(id)

	//更新数据
	stmt, err := db.Prepare("update userinfo set username=? ,departname=? where id=?")
	checkErr(err)
	res, err := stmt.Exec("testusername", "testdepartname", id)
	checkErr(err)
	affect, err := res.RowsAffected()
	checkErr(err)
	fmt.Println(affect)

	//查询数据
	rows, err := db.Query("select * from userinfo")
	checkErr(err)

	for rows.Next() {
		var id int
		var username string
		var departname string
		var created string
		err = rows.Scan(&id, &username, &departname, &created)
		checkErr(err)
		fmt.Println(id)
		fmt.Println(username)
		fmt.Println(departname)
		fmt.Println(created)
	}

}

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go get安装第三方包的前提条件和步骤发布时间:2022-07-10
下一篇:
go语言结构体转map的方法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap