第十七章: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) }