golang,做很多系统都离不开数据库,当然最常用的还是mysql,今天测试了一下连接mysql数据库,呼呼爽啊.再次为golang欢呼.
这次用的是golang的mymysql驱动,好久没有用mysql了,还是忘不了她.
package main
import (
"fmt"
"database/sql"
"github.com/ziutek/mymysql/godrv"
)
// 用户结构
type User struct {
uid int
username string
password string
}
func main() {
// 设置连接编码
godrv.Register("SET NAMES utf8")
// 连接数据库
db, err := sql.Open("mymysql", "tcp:127.0.0.1:3306*go/root/123456")
if err != nil {
panic(err)
}
defer db.Close()
// 插入数据
stmt, err := db.Prepare("insert into user values(null, ?, ?)")
if err != nil {
panic(err)
}
defer stmt.Close()
// sql参数
result, err := stmt.Exec("豆蔻", "dotcoo.com")
if err != nil {
panic(err)
}
// 获取影响的行数
affect, err := result.RowsAffected()
if err != nil {
panic(err)
}
fmt.Printf("%d\n", affect)
// 获取自增id
id, err := result.LastInsertId()
if err != nil {
panic(err)
}
fmt.Printf("%d\n", id)
// 查询数据
rows, err := db.Query("select * from user")
if err != nil {
panic(err)
}
defer rows.Close()
// 获取的用户
users := []User{}
// 读取数据
for rows.Next() {
user := User{}
err := rows.Scan(&user.uid, &user.username, &user.password)
if nil != err {
panic(err)
}
users = append(users, user)
}
// 显示用户信息
for _, user := range users {
fmt.Printf("%d, %s, %s\n", user.uid, user.username, user.password)
}
}