go数据库增删改查

package main

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

/*
    sql.Open("drivename","username:password@tcp(host:port)/dbname?")
    fmt.Sprintf("%s:%s@tcp(%s:%d)/dbname",user,pass,host,port)
    db.Query("select * from ts1")  retun *rows/err
    db.QueryRow("select * from ts1")  return *row/err
    PrePare 准备一个数据库query操作,返回一个*Stmt
    Stmt的主要方法:Exec 执行不返回任何rows的数据库语句(delete),Query,QueryRow,Close
    rows的主要用法:Columns return []string,Scan,Next,Close */

func main() {
    // 连接数据库
    db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test") //return *sql.DB err

    if err != nil {
        fmt.Println("Open database error: %s\n", err)
        return
    }
    defer db.Close()

    // 执行增加
    insert(db)

    // 执行修改
    update(db)

    // 查询结果
    rows, err := db.Query("select id, name,age from ts1 ")
    if err != nil {
        fmt.Println("Open database error: %s\n", err)
        return
    }
    var id int
    var name string
    var age int
    for rows.Next() {
        err := rows.Scan(&id, &name, &age)
        if err == nil {
            fmt.Println(id, name, age)
        }
    }

    //执行删除
    delete(db)

}

// 插入数据
func insert(db *sql.DB) {
    stmt, err := db.Prepare("INSERT INTO ts1(id, name,age) VALUES(?,?,?)")
    if err != nil {
        fmt.Println("Open database error: %s\n", err)
        return
    }
    defer stmt.Close()
    // result, err := smt.Exec("huyao", pwd, time.Now().Format("2006-01-02 15:04:05"))
    stmt.Exec("3", "hello", "5")
}

// 修改数据
func update(db *sql.DB) {
    stmt, err := db.Prepare("update ts1 set age=15 where id=3")
    if err != nil {
        fmt.Println("Open database error: %s\n", err)
        return
    }
    defer stmt.Close()
    // result, err := smt.Exec("huyao", pwd, time.Now().Format("2006-01-02 15:04:05"))
    stmt.Exec()
}

// 删除数据
func delete(db *sql.DB) {
    stmt, err := db.Prepare("delete from ts1 where id = 3")
    if err != nil {
        fmt.Println("Open database error: %s\n", err)
        return
    }
    defer stmt.Close()
    // result, err := smt.Exec("huyao", pwd, time.Now().Format("2006-01-02 15:04:05"))
    stmt.Exec()

}

// 插入、修改或删除时,首先判定要操作的数值是否存在。  需要把要判定的值放入map中  _,ok:=map[key]
func judge(db *sql.DB) map[string]interface{} {
    var m = map[string]interface{}{}
    rows, _ := db.Query("select * from ts1")
    var id, name, age string
    for rows.Next() {
        err := rows.Scan(&id, &name, &age)
        if err == nil {
            m[id] = name
        }
    }
    return m
}

//取得数据的某一列的值
func column(db *sql.DB) {
    results, _ := db.Query("SHOW SLAVE STATUS")
    columns, _ := results.Columns()
    values := make([]sql.RawBytes, len(columns))
    scanArgs := make([]interface{}, len(values))
    for i := range values {
        scanArgs[i] = &values[i]
    }
    //problem  here can print next no
    var value string
    for results.Next() {
        err := results.Scan(scanArgs...)
        if err != nil {
            fmt.Println("Open database error: %s\n", err)
            return
        }
        for i, col := range values {
            if col == nil {
                value = "null"
            } else {
                value = string(col)
            }
            fmt.Print(columns[i], value)
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值