学习Go语言之操作mysql 数据库

数据库脚本


CREATE TABLE `userinfo` (
	`uid` INT(10) NOT NULL AUTO_INCREMENT,
	`username` VARCHAR(64) NULL DEFAULT NULL,
	`department` VARCHAR(64) NULL DEFAULT NULL,
	`created` DATE NULL DEFAULT NULL,
	PRIMARY KEY (`uid`)
);

CREATE TABLE `userdetail` (
	`uid` INT(10) NOT NULL DEFAULT '0',
	`intro` TEXT NULL,
	`profile` TEXT NULL,
	PRIMARY KEY (`uid`)
)

Go 代码

package main

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

func checkError(err error) {
     
	if err != nil {
     
		fmt.Println("出现错误- > ", err)
		return
	}
}

func insert(db *sql.DB) sql.Result {
     
	stmt, err := db.Prepare("insert userinfo set username =?, department=?,created=?")
	checkError(err)
	res, err := stmt.Exec("test", "研发", "2012-12-09")
	checkError(err)
	return res
}

func update(db *sql.DB) sql.Result {
     
	prepare, err := db.Prepare("update userinfo set username=? where uid=?")
	checkError(err)
	// 用来执行 sql 语句
	exec, err := prepare.Exec("cuiyt", 1)
	checkError(err)
	return exec
}

func selectDb(db *sql.DB) {
     
	// 用来直接执行sql 并且返回row结果
	query, err := db.Query("select * from userinfo")
	checkError(err)
	for query.Next() {
     
		var uid int
		var username string
		var department string
		var created string
		err = query.Scan(&uid, &username, &department, &created)
		checkError(err)
		fmt.Println(uid)
		fmt.Println(username)
		fmt.Println(department)
		fmt.Println(created)
	}
}
func deleteDb(id int, db *sql.DB) {
     
	// 用来返回准备要执行的sql操作,然后返回准备完毕的执行状态。
	prepare, err := db.Prepare("delete from userinfo where uid=?")
	checkError(err)
	exec, err := prepare.Exec(id)
	checkError(err)
	res, err := exec.RowsAffected()
	checkError(err)
	fmt.Println(res)
	db.Close()
}
func main() {
     
	// 打开一个注册过的数据库驱动
	db, err := sql.Open("mysql", "root:cui0411..@/go?charset=utf8")
	checkError(err)

	//res := insert(db)
	//id, err := res.LastInsertId()
	//checkError(err)
	//fmt.Println(id)

	// result := update(db)
	// fmt.Println(result)

	selectDb(db)
	deleteDb(2, db)

}

你可能感兴趣的:(go,go,mysql)