golang sqlite3 CRUD

pacakge mainimport (
    "database/sql"
    "fmt"
    "log"
    _ "github.com/mattn/go-sqlite3" // sqlite3 dirver
)

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

type appContext struct {
    db *sql.DB
}

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

func (c *appContext) getAllData() {
    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)
    }
}

// ADD
func (c *appContext) Add() {
    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)
}

// 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)
}

// 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)
}

// sqlite3 CRUD
func main() {
    c, err := connectDB("abc.db")
    if err != "" {
        print(err)
    }
    c.getAllData()
    fmt.Println("get action done!")

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

    c.Delete()
    fmt.Println("delete action done!")

    c.Update()
    fmt.Println("update action done!")
}
时间: 2024-10-08 21:46:18

golang sqlite3 CRUD的相关文章

golang postgresql CRUD

package main import ( "database/sql" "fmt" "log" _ "github.com/lib/pq" // postgres driver ) // People - database type People struct { id int name string age int } type appContext struct { db *sql.DB } // ConnectDB c

golang SQLite3性能测试

SQLite是个小型的数据库,很简洁,即支持文件也支持内存,比较适合小型的独立项目,在没有网络的时候做一些复杂的关系数据存储和运算. 为了考察性能做10M(1000万)条记录的测试,测试机4CPU.8G内存,操作系统:Ubuntu 16 测试结果: 10M条写入时间:92秒 平均每条检索时间:0.0172毫秒 最大内存占用1.7G 使用的Driver github.com/mattn/go-sqlite3 下面是测试的代码 //SQLite in memory,小心,不能只写:memory:,这

golang(3):beego CRUD demo (1)

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46699343 转载请一定注明出处! 1,beego 自带crud生成工具 工具执行非常简单: bee generate scaffold post -fields="title:string,body:text" 设置模块post,里面的fileds有两个 title 和body. bee generate scaffold post -fields="ti

Go语言(golang)开源项目大全

转http://www.open-open.com/lib/view/open1396063913278.html内容目录Astronomy构建工具缓存云计算命令行选项解析器命令行工具压缩配置文件解析器控制台用户界面加密数据处理数据结构数据库和存储开发工具分布式/网格计算文档编辑器Encodings and Character SetsGamesGISGo ImplementationsGraphics and AudioGUIs and Widget ToolkitsHardwareLangu

代码片段 - Golang 实现简单的 Web 服务器

------------------------------ 下面一段代码,实现了最简单的 Web 服务器: 编译环境: Linux Mint 18 Cinnamon 64-bit Golang 1.7 ------------------------------ // main.go package main import ( "fmt" "log" "net/http" ) // 处理主页请求 func index(w http.Respon

持久化存储 --- SQLite3 的使用

一.为什么要使用SQLite3,什么是SQLite3,常见的数据库可以用于移动端嘛? 1.持久化存储的方式有以下几种: 1.plist 只能存储NSDictionary 和NSArray的数据. 2.Preference 偏好设置NSUserDefaults,存取方便,但只能存储小数据. 3.NSCoding (NSKeyedArchiver\NSkeyedUnarchiver)归档可以存储大数据,但是不方便存取,每次存储都会覆盖上一次的内容. 4.SQLite3 重点,存储速度快,而且可以存储

[转]Go语言(golang)开源项目大全

内容目录 Astronomy 构建工具 缓存 云计算 命令行选项解析器 命令行工具 压缩 配置文件解析器 控制台用户界面 加密 数据处理 数据结构 数据库和存储 开发工具 分布式/网格计算 文档 编辑器 Encodings and Character Sets Games GIS Go Implementations Graphics and Audio GUIs and Widget Toolkits Hardware Language and Linguistics 日志 机器学习 Math

亲测可用的golang sql例程与包管理

sqlite与golang package main import ( "database/sql" "fmt" "time" _ "github.com/mattn/go-sqlite3" ) func main() { //打开数据库,如果不存在,则创建 db, err := sql.Open("sqlite3", "./foo.db") checkErr(err) //创建表 sq

golang 接口开发入门01- 从0开始构建项目

之前写了两篇golang开发入门文章,太过潦草,赶着10.1 放假的前夕,想着还是要认真对待自己写的东西,记录学习的点滴,以后也许会忘了现在学习的东西,但是好歹留下一些文字,同时也希望能给花时间读我博客的人真正有些帮助. 前期准备 因为golang 之前断断续续学过一点,所以现在就以开发一个用户管理这样简单的功能入手.如果你现在在看我的这篇文章,你需要要具备以下知识点 1.golang 开发环境搭建 2.golang 的基本语法 3.面向对象和mvc开发思想 搭建项目 我使用eclipse作为开