Golang sqlite3

//QQ29295842

package main

import (
    "database/sql"
    "fmt"

    "log"

    _ "github.com/mattn/go-sqlite3" // sqlite3 dirver
)

// People - database fields
type People struct {
    id   int
    name string
    age  int
}

type appContext struct {
    db *sql.DB
}

func connectDB(driverName string, dbName string) (*appContext, string) {
    db, err := sql.Open(driverName, dbName)
    if err != nil {
        return nil, err.Error()
    }
    if err = db.Ping(); err != nil {
        return nil, err.Error()
    }
    return &appContext{db}, ""
}

// Create
func (c *appContext) Create() {
    stmt, err := c.db.Prepare("INSERT INTO users(name,age) values(?,?)")
    if err != nil {
        log.Fatal(err)
    }
    result, err := stmt.Exec("Jack", 1)
    if err != nil {
        fmt.Printf("add error: %v", err)
        return
    }
    lastID, err := result.LastInsertId()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("inserted id is ", lastID)
}

// Read
func (c *appContext) Read() {
    rows, err := c.db.Query("SELECT * FROM users")
    if err != nil {
        fmt.Println(err.Error())
        return
    }
    defer rows.Close()

    for rows.Next() {
        p := new(People)
        err := rows.Scan(&p.id, &p.name, &p.age)
        if err != nil {
            fmt.Println(err)
        }
        fmt.Println(p.id, p.name, p.age)
    }
}

// UPDATE
func (c *appContext) Update() {
    stmt, err := c.db.Prepare("UPDATE users SET age = ? WHERE id = ?")
    if err != nil {
        log.Fatal(err)
    }
    result, err := stmt.Exec(10, 1)
    if err != nil {
        log.Fatal(err)
    }
    affectNum, err := result.RowsAffected()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("update affect rows is ", affectNum)
}

// DELETE
func (c *appContext) Delete() {
    stmt, err := c.db.Prepare("DELETE FROM users WHERE id = ?")
    if err != nil {
        log.Fatal(err)
    }
    result, err := stmt.Exec(1)
    if err != nil {
        log.Fatal(err)
    }
    affectNum, err := result.RowsAffected()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("delete affect rows is ", affectNum)
}

// Mysqlite3 - sqlite3 CRUD
func main() {
    c, err := connectDB("sqlite3", "abc.db")
    if err != "" {
        print(err)
    }

    c.Create()
    fmt.Println("add action done!")

    c.Read()
    fmt.Println("get action done!")

    c.Update()
    fmt.Println("update action done!")

    c.Delete()
    fmt.Println("delete action done!")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值