golang操作mysql

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

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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

MATLAB高效编程技巧与应用

MATLAB高效编程技巧与应用

吴鹏 / 北京航空航天大学 / 2010-6 / 39.00元

《MATLAB高效编程技巧与应用:25个案例分析》是作者八年MATLAB使用经验的总结,精心设计的所有案例均来自于国内各大MATLAB技术论坛网友的切身需求,其中不少案例涉及的内容和求解方法在国内现已出版的MATLAB书籍中鲜有介绍。 《MATLAB高效编程技巧与应用:25个案例分析》首先针对MATLAB新版本特有的一些编程思想、高效的编程方法、新技术进行了较为详细的讨论,在此基础上,以大量......一起来看看 《MATLAB高效编程技巧与应用》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具