golang 操作 mysql

daymenu · 2019-07-25 11:07:11 · 837 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2019-07-25 11:07:11 的文章,其中的信息可能已经有所发展或是发生改变。

建立表t

CREATE TABLE `t` (
  `id` int(11) NOT NULL,
  `a` int(11) DEFAULT NULL,
  `t_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `a` (`a`),
  KEY `t_modified` (`t_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

golang 代码

查询一行 功能点都放在注释中了

package main

import (
    "database/sql" // sql 官方接口
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql" // mysql 驱动
)

const (
    dbName    = "test"                                      //定义数据库名
    DB_Driver = "root:123456@tcp(127.0.0.1:3306)/" + dbName // 定义数据库连接字符串
)

// TModel 结构体定义
type TModel struct {
    Id     int    `db:"id"`
    A      int    `db:"a"`
    Modify string `db:"t_modified"`
}

// CreateDB 创建数据库连接
func CreateDB() (*sql.DB, error) {
    db, err := sql.Open("mysql", DB_Driver)
    if err != nil {
        return nil, err
    }
    return db, err
}

func main() {
    db, err := CreateDB()
    if err != nil { // 判断如果有错误输出并结束程序
        log.Fatal(err)
    }
    defer db.Close()                                       // 最后关闭连接
    row := db.QueryRow("select * from t where id = ?;", 1) // 查询一行
    if err != nil {
        log.Fatal(row)
    }
    var t TModel
    err = row.Scan( // 将数据填充到变量
        &t.Id,
        &t.A,
        &t.Modify,
    )
    if err != nil {
        log.Fatal(err)
    }
    // 输出填充后的数据
    fmt.Printf("%#v\n", t)
}

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

837 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传