golang中连接mysql数据库,操作数据库

golang中连接数据库需要首先下载对应数据库的客户端驱动,我们以mysql为例:

  1. 首先下载mysql客户端驱动:
go get github.com/go-sql-driver/mysql

然后通过sql.Open获取一个数据库连接:

url :="root:123456@tcp(127.0.01)/golang"
con,err := sql.Open("mysql",url)

接下来我们看看怎么操作数据库:

package model

import (
	"database/sql"
	"fmt"
)

type ExecutorGroup struct {
	Model
	Name string `json:"name" db:"name"`
	Description string `json:"description" db:"description"`
	Urls string `json:"urls" db:"urls"`
}



func GetAllExecutorGroup(con *sql.DB)([]ExecutorGroup,error) {
	querySql := "select id,name,description,urls from executor_group"
	rows,err := con.Query(querySql)
	if err != nil {
		return nil,err
	}
	result := make([]ExecutorGroup,0)
	index := 0
	for rows.Next() {
		var row ExecutorGroup
		rows.Scan(&row.Id,&row.Name,&row.Description,&row.Urls)
		result = append(result,row)
		index ++
	}
	fmt.Println(index)
	return result,err
}

func GetExecutorGroupById(con *sql.DB,id uint)(*ExecutorGroup,error) {
	querySql :=  fmt.Sprintf("select id,name,description,urls from executor_group where id = %d ",id)
	rows,err := con.Query(querySql)
	if err != nil {
		return nil,err
	}
	if rows.Next() {
		var group ExecutorGroup
		rows.Scan(&group.Id,&group.Name,&group.Description,&group.Urls)
		return &group,nil
	}
	return nil,nil
}
func InsertExecutorGroup(con *sql.DB,executorGroup *ExecutorGroup) error {
	tx,err := con.Begin()
	if err != nil {
		return err
	}
	insertSql := "insert into executor_group(name,description,urls) values(?,?,?)"
	stmt ,err := tx.Prepare(insertSql)
	if err != nil {
		return err;
	}

	_ ,err = stmt.Exec(executorGroup.Name,executorGroup.Description,executorGroup.Urls)

	tx.Commit()

	return err;
}

func UpdateExecutorGroup(con *sql.DB ,executorGroup *ExecutorGroup) error {
	tx,err := con.Begin()
	if err != nil {
		return err
	}
	insertSql := "update executor_group set name=?,description=?,urls=? where id =? "
	stmt ,err := tx.Prepare(insertSql)
	if err != nil {
		return err;
	}
	_ ,err = stmt.Exec(executorGroup.Name,executorGroup.Description,executorGroup.Urls)
	return err;
}

func DeleteExecutorGroup(con *sql.DB ,id int) error {
	tx,err := con.Begin()
	if err != nil {
		return err
	}
	deleteSql := fmt.Sprintf("delete from executor_group where id =%d ",id)
	_,err = tx.Exec(deleteSql)
	if err != nil {
		return err;
	}
	err = tx.Commit()
	return err;
}




如上,对应常见的数据库的增删改查,并加上事务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值