本书未发布

01 本文未发布 发布文章

未匹配的标注
package main

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

func main() {
    query()
    //query2()
    //insert()
    //update()
    //remove()
}



//查询数据
func query() {
    db, err := sql.Open("mysql", "root:@/shopvisit")
    check(err)

    rows, err := db.Query("SELECT * FROM shopvisit.announcement")
    check(err)

    for rows.Next() {
        columns, _ := rows.Columns()

        scanArgs := make([]interface{}, len(columns))
        values := make([]interface{}, len(columns))

        for i := range values {
            scanArgs[i] = &values[i]
        }

        //将数据保存到 record 字典
        err = rows.Scan(scanArgs...)
        record := make(map[string]string)
        for i, col := range values {
            if col != nil {
                record[columns[i]] = string(col.([]byte))
            }
        }
        fmt.Println(record)
    }
    rows.Close()

}
func query2()  {
    fmt.Println("Query2")
    db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/shopvisit?charset=utf8")
    check(err)

    rows, err := db.Query("SELECT id,imgUrl,createDate,state FROM announcement")
    check(err)

    for rows.Next(){
        var id int
        var state int
        var imgUrl string
        var createDate string
        //注意这里的Scan括号中的参数顺序,和 SELECT 的字段顺序要保持一致。
        if err := rows.Scan(&id,&imgUrl,&createDate,&state); err != nil {
            log.Fatal(err)
        }
        fmt.Printf("%s id is %d on %s with state %d\n", imgUrl, id, createDate, state)
    }

    if err := rows.Err(); err != nil {
        log.Fatal(err)
    }
    rows.Close()
}


//插入数据
func insert()  {
    db, err := sql.Open("mysql", "root:@/shopvisit")
    check(err)

    stmt, err := db.Prepare(`INSERT announcement (imgUrl, detailUrl, createDate, state) VALUES (?, ?, ?, ?)`)
    check(err)

    res, err := stmt.Exec("/visitshop/img/ann/cofox1.png",nil,"2017-09-06",0)
    check(err)

    id, err := res.LastInsertId()
    check(err)

    fmt.Println(id)
    stmt.Close()

}

//修改数据
func update() {
    db, err := sql.Open("mysql", "root:@/shopvisit")
    check(err)

    stmt, err := db.Prepare("UPDATE announcement set imgUrl=?, detailUrl=?, createDate=?, state=? WHERE id=?")
    check(err)

    res, err := stmt.Exec("/visitshop/img/ann/cofox2.png", nil, "2017-09-05", 1, 7)
    check(err)

    num, err := res.RowsAffected()
    check(err)

    fmt.Println(num)
    stmt.Close()
}

//删除数据
func remove() {
    db, err := sql.Open("mysql", "root:@/shopvisit")
    check(err)

    stmt, err := db.Prepare("DELETE FROM announcement WHERE id=?")
    check(err)

    res, err := stmt.Exec(7)
    check(err)

    num, err := res.RowsAffected()
    check(err)

    fmt.Println(num)
    stmt.Close()

}

func check(err error) {
    if err != nil{
        fmt.Println(err)
        panic(err)
    }
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Luson
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~