golang访问mysql数据库,增删改查

需要的第三方包:

go get github.com/jmoiron/sqlx
go get github.com/go-sql-driver/mysql

主要API:

  • sqlx.Open (driverName, dataSourceName string) (*DB, error)
    – driverName : 数据库类型
    – dataSourceName : 数据库信息
    – 返回一个数据库实例和错误

  • func (db *DB) Exec(query string, args …interface{}) (Result, error)
    可以直接执行 增删改 操作

  • func (db *DB) Select(dest interface{}, query string, args …interface{}) error
    查询操作函数

建表语句:

CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=163 DEFAULT CHARSET=latin1;

代码:

package main

import (
	"github.com/jmoiron/sqlx"
	_"github.com/go-sql-driver/mysql" //_ 代表初始化这个库
	"fmt"
	"strconv"
)

//结构体变量首字母大写,以便外部可修改成员变量
type person struct {
	Name string `db "name"`
	Age int `db "age"`
	Id int `db "id"`
}


func handleError(e error,msg string){
	if (e != nil){
		fmt.Println(e,msg)
	}
}
func main() {
	var ps []person
	db,err:=sqlx.Open("mysql","root:root@/web")
	handleError(err,"sqlx")
	defer db.Close()
	//删除表数据
	db.Exec("delete from person")
	var last_id int64

	//insert 数据
	for i:= 0; i< 10 ;i++  {
		rst,_ := db.Exec(`insert into person (name ,age) values (? ,?)`, "zhangsan_"+strconv.Itoa(i+20), 20+i)
		a_num, _ := rst.RowsAffected()
		last_id, _ = rst.LastInsertId()
		fmt.Println("影响的行数:",a_num,"最后一条记录的id为:",last_id)
	}

	//修改数据
	db.Exec(`update person set name = "lisi" where id=?`, last_id)
	//查询数据
	db.Select(&ps,"select name ,age,id from person")

	for _,unit_ps := range ps{
		fmt.Printf("name: %s,age: %d,Id :%d\n",unit_ps.Name,unit_ps.Age,unit_ps.Id)
	}

输出:

影响的行数: 1 最后一条记录的id为: 153
影响的行数: 1 最后一条记录的id为: 154
影响的行数: 1 最后一条记录的id为: 155
影响的行数: 1 最后一条记录的id为: 156
影响的行数: 1 最后一条记录的id为: 157
影响的行数: 1 最后一条记录的id为: 158
影响的行数: 1 最后一条记录的id为: 159
影响的行数: 1 最后一条记录的id为: 160
影响的行数: 1 最后一条记录的id为: 161
影响的行数: 1 最后一条记录的id为: 162
name: zhangsan_20,age: 20,Id :153
name: zhangsan_21,age: 21,Id :154
name: zhangsan_22,age: 22,Id :155
name: zhangsan_23,age: 23,Id :156
name: zhangsan_24,age: 24,Id :157
name: zhangsan_25,age: 25,Id :158
name: zhangsan_26,age: 26,Id :159
name: zhangsan_27,age: 27,Id :160
name: zhangsan_28,age: 28,Id :161
name: lisi,age: 29,Id :162
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章