golang操作mysql

栏目: Go · 发布时间: 6年前

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

// 定义要被查询的结构体
// 字段和数据库基本一致
type Email struct {
    Id int
    UserId string
    Email string
    Subscribe sql.NullInt64  // Subscribe 字段可能为null 所以使用sql.Null 开头的类型作为字段类型定义
}

func main() {
    // 数据库连接:  格式为: 用户名:密码@tcp(IP:端口)/库名?charset=utf8
    path := strings.Join([]string{"root", ":", "123", "@tcp(127.0.0.1:3306)/test?charset=utf8"}, "")
    db, err := sql.Open("mysql", path)
    if err != nil {
        fmt.Println("conn error: ", err)
    }

    db.SetConnMaxLifetime(10)  // 设置数据库最大连接数
    db.SetMaxOpenConns(10)  // 设置数据最大闲置
    
    // 普通插入方式
    //res, err := db.Exec("INSERT INTO emails(user_id, email) VALUES (11, 'abc@qq.com')")

    // 事务的方式来插入数据
    tx, err := db.Begin()
    ins, err := tx.Prepare("INSERT INTO emails(user_id, email) VALUES (?, ?)")
    res, err := ins.Exec(132, "yangzhaoss")
    fmt.Println()
    if err == nil {
        fmt.Println(res.LastInsertId())  // 获取自增id
    }else {
        fmt.Println(err)
    }

    // 删除操作
    del, err := tx.Prepare("DELETE FROM emails WHERE user_id = ?")
    if err == nil {
        res, err = del.Exec(132)
        tx.Commit()
    }else {
        fmt.Println(err)
    }

    // 查找操作
    // 单行查询 用QueryRow函数查询, 并且利用Scan将查询结果赋值到对应的对象中
    // 多行查询: 执行Query函数, 利用Next() 读取每一行返回的结果,并Scan赋值到相应的对象中。
    // 对于数据库中可能为Null的字段, 在结构体中设置字段类型为sql.Null 开头的对应类型
    rows, err := db.Query("select * from emails")
    var emails []Email
    if err == nil {
        for rows.Next() {
            var email Email
            err := rows.Scan(&email.Id, &email.UserId, &email.Email,&email.Subscribe)
            if err != nil {
                fmt.Println("Rows fail: ", err)
            }
            emails = append(emails, email)
        }
    // 对于可能为null的字段 要设置为 sql.Null 对应的字段
    }
    for _, v := range emails {
        fmt.Println(v.Id, v.UserId, v.Email, v.Subscribe)
    }
}

以上所述就是小编给大家介绍的《golang操作mysql》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

新零售进化论

新零售进化论

陈欢、陈澄波 / 中信出版社 / 2018-7 / 49.00

本书主要介绍了新零售的进化现象和规律,提出了新零售的第一性原理是物理数据二重性,即在新零售时代,所有的人、货、场既是物理的也是数据的。 通过这个原点,进一步衍生出了新零售的八大核心算法,并用大量的辅助观点和新零售案例来揭示新零售背后的算法逻辑。 综合一系列的理论推演和案例讲解,作者重点回答了以下3个问题: ● 我们是行业的强者,如果跟不上新零售的潮流,会不会被淘汰? ● 我......一起来看看 《新零售进化论》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具