第十七章:Go语言之MySql

1、MySQL驱动
https://github.com/Go-SQL-Driver/MySQL

sql.Open()函数用来打开一个注册过的数据库驱动,Go-MySQL-Driver中注册了mysql这个数据库驱动,第二个参数是DNS(Data Source Name),
它是Go-MySQL-Driver定义的 一些数据库链接和配置信息。它支持如下格式:

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

2、增删改查

插入数据

stmt, err := db.Prepare("INSERT user_info SET username=?,departname=?,create_time=?")

res, err := stmt.Exec("zhangsan", "技术部", "2012-12-09")
id, err := res.LastInsertId()


更新数据

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

res, err = stmt.Exec("lisi", id)
affect, err := res.RowsAffected()

查询数据

rows, err := db.Query("SELECT * FROM user_info")
for rows.Next() {
var id int
var username string
var department string
var create_time string
err = rows.Scan(&uid, &username, &department, &create_time)
}

删除数据

stmt, err = db.Prepare("delete from user_info where uid=?")
res, err = stmt.Exec(id)

 

// mysql.go
package main

import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
)

func main() {
	db, err := sql.Open("mysql", "root:123456@tcp(node01:3306)/test?charset=utf8")
	if err != nil {
		panic(err)
	}

	//新增
	/*	stmt, err := db.Prepare("INSERT user_info  SET username=?,departname=?,create_time=?")

		res, err := stmt.Exec("zhangsan", "技术部", "2016-12-09")
		id, err := res.LastInsertId()
		if err != nil {
			panic(err)
		}

		fmt.Println(id) */

	//修改
	/*stmt, err := db.Prepare("update user_info set username=? where id=?")
	if err != nil {
		panic(err)
	}
	res, err := stmt.Exec("lisi", 1)
	if err != nil {
		panic(err)
	}
	row, _ := res.RowsAffected()
	fmt.Println(row)*/

	//查询
	/*row, err := db.Query("select * from user_info")
	if err != nil {
		panic(err)
	}
	for row.Next() {
		var id int
		var username string
		var departname string
		var create_time string
		err := row.Scan(&id, &username, &departname, &create_time)
		if err != nil {
			panic(err)
		}
		fmt.Println(id, username, departname, create_time)
	}*/

	//删除
	stmt, err := db.Prepare("delete from user_info where id = ?")
	if err != nil {
		panic(err)
	}
	res, err := stmt.Exec(1)
	if err != nil {
		panic(err)
	}
	row, _ := res.RowsAffected()
	fmt.Println(row)
}

  

 

posted on 2019-02-25 10:07  唯伊  阅读(93)  评论(0编辑  收藏  举报

导航