go语言mysql数据库开发_go语言开发mysql数据库的使用-Go语言中文社区

在进行开发之前首先要使用git下载mysql的驱动,github上面的mysql驱动有好几个,我在这里选择的https://github.com/go-sql-driver/mysql,

执行命令:go get -u github.com/go-sql-driver/mysql

在正式开发之前先创建对应的数据库和表

CREATE TABLE `userinfo` (

`autid` INT(10) NOT NULL AUTO_INCREMENT,

`username` VARCHAR(64) NULL DEFAULT NULL,

`departname` VARCHAR(64) NULL DEFAULT NULL,

`password` VARCHAR(64) NULL DEFAULT NULL,

`uid` VARCHAR(64) NULL DEFAULT NULL,

`created` DATE NULL DEFAULT NULL,

PRIMARY KEY (`uid`)

);

导入基本类库

import (

"crypto/md5"

"database/sql"

"encoding/hex"

"fmt"

_ "github.com/go-sql-driver/mysql"

"strconv"

"time"

)

下面主要从增删查改四个方面介绍go语言中mysql的使用

一、注册数据库驱动

使用sql.Open()函数打开注册一个注册过的驱动,第一个参数是数据库类型,第二个参数是,第二个参数是DSN(Data Source Name),它是go-sql-driver定义的一些数据库链接和配置信息,DSN有以下格式:

user@unix(/path/to/socket)/dbname?charset=utf8

user:password@tcp(localhost:5555)/dbname?charset=utf8

user:password@/dbname

user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname

代码如下:

const (

DB_Driver = "root:meddeex@tcp(127.0.0.1:3306)/medex?charset=utf8"

)

func OpenDB() (success bool, db *sql.DB) {

var isOpen bool

db, err := sql.Open("mysql", DB_Driver)

if err != nil {

isOpen = false

} else {

isOpen = true

}

CheckErr(err)

return isOpen, db

}

二、插入

func insertToDB(db *sql.DB) {

uid := GetNowtimeMD5()

nowTimeStr := GetTime()

stmt, err := db.Prepare("insert userinfo set username=?,departname=?,created=?,password=?,uid=?")

CheckErr(err)

res, err := stmt.Exec("wangbiao", "研发中心", nowTimeStr, "123456", uid)

CheckErr(err)

id, err := res.LastInsertId()

CheckErr(err)

if err != nil {

fmt.Println("插入数据失败")

} else {

fmt.Println("插入数据成功:", id)

}

}

三、查询

func QueryFromDB(db *sql.DB) {

rows, err := db.Query("SELECT * FROM userinfo")

CheckErr(err)

if err != nil {

fmt.Println("error:", err)

} else {

}

for rows.Next() {

var uid string

var username string

var departmentname string

var created string

var password string

var autid string

CheckErr(err)

err = rows.Scan(&uid, &username, &departmentname, &created, &password, &autid)

fmt.Println(autid)

fmt.Println(username)

fmt.Println(departmentname)

fmt.Println(created)

fmt.Println(password)

fmt.Println(uid)

}

}

四、更新

func UpdateDB(db *sql.DB, uid string) {

stmt, err := db.Prepare("update userinfo set username=? where uid=?")

CheckErr(err)

res, err := stmt.Exec("zhangqi", uid)

affect, err := res.RowsAffected()

fmt.Println("更新数据:", affect)

CheckErr(err)

}

五、删除

func DeleteFromDB(db *sql.DB, autid int) {

stmt, err := db.Prepare("delete from userinfo where autid=?")

CheckErr(err)

res, err := stmt.Exec(autid)

affect, err := res.RowsAffected()

fmt.Println("删除数据:", affect)

}

开发过程中用到的一些工具类方法

func CheckErr(err error) {

if err != nil {

panic(err)

fmt.Println("err:", err)

}

}

func GetTime() string {

const shortForm = "2006-01-02 15:04:05"

t := time.Now()

temp := time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), time.Local)

str := temp.Format(shortForm)

fmt.Println(t)

return str

}

func GetMD5Hash(text string) string {

haser := md5.New()

haser.Write([]byte(text))

return hex.EncodeToString(haser.Sum(nil))

}

func GetNowtimeMD5() string {

t := time.Now()

timestamp := strconv.FormatInt(t.UTC().UnixNano(), 10)

return GetMD5Hash(timestamp)

}

调用

func main() {

opend, db := OpenDB()

if opend {

fmt.Println("open success")

} else {

fmt.Println("open faile:")

}

DeleteFromDB(db, 10)

//QueryFromDB(db)

//DeleteFromDB(db, 1)

//UpdateDB(db, 5)

//insertToDB(db)

//UpdateUID(db, 5)

//UpdateTime(db, 4)

}

写在最后:

本篇文章主要介绍mysql在go语言开发中的基本使用,其实真正开发过程中还是主要使用orm相关第三方框架,但是底层原理还是要学的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值