1、增
func insert() {
db1, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/cy?parseTime=true")
if err != nil{
fmt.Println(err)
}
defer db1.Close()
stmt, err := db1.Prepare("insert into person(user_id,username,sex,email)value (?,?,?,?)")
res, err := stmt.Exec("user_id","username","sex","email")
if err != nil {
log.Fatal(err)
}
lastId, err := res.LastInsertId()
if err != nil {
log.Fatal(err)
}
fmt.Println(lastId)
}
2、删
func del() {
db1, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/cy?parseTime=true")
if err != nil{
fmt.Println(err)
}
defer db1.Close()
stmt, err := db1.Prepare("delete from person where user_id=?")
res, err := stmt.Exec("user_id")
if err != nil {
log.Fatal(err)
}
num, err := res.RowsAffected()
if err != nil {
log.Fatal(err)
}
fmt.Println(num)
}
3、改
func update() {
db1, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/cy?parseTime=true")
if err != nil{
fmt.Println(err)
}
defer db1.Close()
stmt, err := db1.Prepare("update person set username=?,sex=?,email=? where user_id=?")
res, err := stmt.Exec("username","sex","email","user_id")
if err != nil {
log.Fatal(err)
}
num, err := res.RowsAffected()
if err != nil {
log.Fatal(err)
}
fmt.Println(num)
}
4、查
func query() {
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/cyball?parseTime=true")
if err != nil{
fmt.Println(err)
}
defer db.Close()
//查询数据,取所有字段
rows2, _ := db.Query("select * from person")
//返回所有列
cols, _ := rows2.Columns()
//这里表示一行所有列的值,用[]byte表示
vals := make([][]byte, len(cols))
//这里表示一行填充数据
scans := make([]interface{}, len(cols))
//这里scans引用vals,把数据填充到[]byte里
for k, _ := range vals {
scans[k] = &vals[k]
}
i := 0
result := make(map[int]map[string]string)
for rows2.Next() {
//填充数据
rows2.Scan(scans...)
//每行数据
row := make(map[string]string)
//把vals中的数据复制到row中
for k, v := range vals {
key := cols[k]
//这里把[]byte数据转成string
row[key] = string(v)
}
//放入结果集
result[i] = row
i++
}
println(result)
}
5、数据库数据转移(可加逻辑)
func mains() {
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/cyball?parseTime=true")
if err != nil{
fmt.Println(err)
}
defer db.Close()
//查询数据,取所有字段
rows2, _ := db.Query("select * from person")
//返回所有列
cols, _ := rows2.Columns()
//这里表示一行所有列的值,用[]byte表示
vals := make([][]byte, len(cols))
//这里表示一行填充数据
scans := make([]interface{}, len(cols))
//这里scans引用vals,把数据填充到[]byte里
for k, _ := range vals {
scans[k] = &vals[k]
}
i := 0
result := make(map[int]map[string]string)
for rows2.Next() {
//填充数据
rows2.Scan(scans...)
//每行数据
row := make(map[string]string)
//把vals中的数据复制到row中
for k, v := range vals {
key := cols[k]
//这里把[]byte数据转成string
row[key] = string(v)
}
//放入结果集
result[i] = row
i++
}
db1, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/cy?parseTime=true")
if err != nil{
fmt.Println(err)
}
defer db1.Close()
for _, value := range result {
stmt, err := db1.Prepare("insert into person(user_id,username,sex,email)value (?,?,?,?)")
res, err := stmt.Exec(value["user_id"],value["username"],value["sex"],value["email"])
if err != nil {
log.Fatal(err)
}
lastId, err := res.LastInsertId()
if err != nil {
log.Fatal(err)
}
fmt.Println(lastId)
}
//fmt.Println(result)
}