示例文件

doc命令行安装驱动

go get -u github.com/go-sql-driver/mysql

连接数据库

package main
import (
	"database/sql"
	_ "database/sql"
	"fmt"
	_ "fmt"

	_ "github.com/go-sql-driver/mysql"
)
func main() {
	// 数据库连接信息
	db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/macos")
	if err != nil {
		panic(err.Error())
	}
	// 建立连接
	defer db.Close()
	// 测试连接是否成功
	err = db.Ping()
	if err != nil {
		panic(err.Error())
	}
	fmt.Println("数据库连接成功")
}

查询数据

func dbsearch() {
	// 数据库连接信息
	db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/macos")
	if err != nil {
		panic(err.Error())
	}
	// 建立连接
	defer db.Close()
	// 测试连接是否成功
	err = db.Ping()
	if err != nil {
		panic(err.Error())
	}
	fmt.Println("数据库连接成功")
	// 执行SQL语句
	rows, err := db.Query("SELECT vod_id,vod_name FROM mac_vod")
	if err != nil {
		panic(err.Error())
	}
	defer rows.Close()
	// 遍历结果集
	for rows.Next() {
		var vod_id int
		var vod_name string
		//var age int
		err = rows.Scan(&vod_id, &vod_name)
		if err != nil {
			panic(err.Error())
		}
		fmt.Println(vod_id, vod_name)
	}
}

根据id查询数据

func dbsearchbyid(id int) {
	// 数据库连接信息
	db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/macos")
	if err != nil {
		panic(err.Error())
	}
	// 建立连接
	defer db.Close()
	// 测试连接是否成功
	err = db.Ping()
	if err != nil {
		panic(err.Error())
	}
	fmt.Println("数据库连接成功")
	// 执行SQL语句
	rows, err := db.Query("SELECT vod_id,vod_name FROM mac_vod where vod_id=?", id)
	if err != nil {
		panic(err.Error())
	}
	defer rows.Close()
	// 遍历结果集
	for rows.Next() {
		var vod_id int
		var vod_name string
		//var age int
		err = rows.Scan(&vod_id, &vod_name)
		if err != nil {
			panic(err.Error())
		}
		fmt.Println(vod_id, vod_name)
	}
}

插入数据

文件头部定义结构体,数据库内全部字段

type Album struct {
	ID   int64
	Name string
}

插入数据

func dbinsert(alb Album) (int64, error) {
	// 数据库连接信息
	db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/demo1")
	if err != nil {
		panic(err.Error())
	}
	// 建立连接
	defer db.Close()
	// 测试连接是否成功
	err = db.Ping()
	if err != nil {
		panic(err.Error())
	}
	fmt.Println("数据库连接成功")
	//插入数据
	result, err := db.Exec("INSERT INTO fund (id, name) VALUES (?, ?)", alb.ID, alb.Name)
	if err != nil {
		return 0, fmt.Errorf("addAlbum: %v\n", err)
	}
	id, err := result.LastInsertId()
	if err != nil {
		return 0, fmt.Errorf("addAlbum: %v\n", err)
	}
	println("数据写入成功")
	return id, nil

}

调用方式

func main() {
	dbinsert(Album{ID: 8, Name: "zhang"}) //插入数据
}