Go中操作mysql

Go中操作mysql

首先在mysql里的test数据库中创建数据表
CREATE TABLE `userinfo` (
	`uid` INT(10) NOT NULL AUTO_INCREMENT,
	`username` VARCHAR(64) NULL DEFAULT NULL,
	`department` VARCHAR(64) NULL DEFAULT NULL,
	`created` DATE NULL DEFAULT NULL,
	PRIMARY KEY (`uid`)
);

CREATE TABLE `userdetail` (
	`uid` INT(10) NOT NULL DEFAULT '0',
	`intro` TEXT NULL,
	`profile` TEXT NULL,
	PRIMARY KEY (`uid`)
)

MySQL的增删改查
package main

import (
        "database/sql"
        "fmt"
        //"time"

        _ "github.com/go-sql-driver/mysql"//未下载要从github上下载到本地
)

func main() {
        db, err := sql.Open("mysql", "root:root@tcp(192.168.137.200:3306)/test?charset=utf8")
        checkErr(err)

        //插入数据
        stmt, err := db.Prepare("INSERT INTO userinfo SET username=?,department=?,created=?")
        checkErr(err)

        res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")
        checkErr(err)

        id, err := res.LastInsertId()
        checkErr(err)

        fmt.Println(id)
        //更新数据
        stmt, err = db.Prepare("update userinfo set username=? where uid=?")
        checkErr(err)

        res, err = stmt.Exec("astaxieupdate", 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 uid int
                var username string
                var department string
                var created string
                err = rows.Scan(&uid, &username, &department, &created)
                checkErr(err)
                fmt.Println(uid)
                fmt.Println(username)
                fmt.Println(department)
                fmt.Println(created)
        }

        //删除数据
        // stmt, err = db.Prepare("delete from userinfo where uid=?")
        // checkErr(err)

        // res, err = stmt.Exec(id)
        // checkErr(err)

        // affect, err = res.RowsAffected()
        // checkErr(err)

        // fmt.Println(affect)

        db.Close()

}

func checkErr(err error) {
        if err != nil {
                panic(err)
        }
}

注意点:

//数据库连接支持如下格式
-     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

原文链接:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/05.2.md

posted @ 2020-05-06 13:33  CodeMuscle  阅读(183)  评论(0编辑  收藏  举报