golang sqlite3 CRUD
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", )
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(, )
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()
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!")
}
golang sqlite3 CRUD的更多相关文章
- 我的Vue之旅 07 Axios + Golang + Sqlite3 实现简单评论机制
第三期 · 使用 Vue 3.1 + TailWind.CSS + Axios + Golang + Sqlite3 实现简单评论机制 效果图 CommentArea.vue 我们需要借助js的Dat ...
- golang postgresql CRUD
package main import ( "database/sql" "fmt" "log" _ "github.com/li ...
- golang SQLite3性能测试
SQLite是个小型的数据库,很简洁,即支持文件也支持内存,比较适合小型的独立项目,在没有网络的时候做一些复杂的关系数据存储和运算. 为了考察性能做10M(1000万)条记录的测试,测试机4CPU.8 ...
- C 扩展库 - sqlite3 API CRUD
CRUD struct student typedef struct STUDENT { unsigned int id; unsigned char name[16]; unsigned int a ...
- golang web实战之三(基于iris框架的 web小应用,数据库采用 sqlite3 )
一.效果:一个图片应用 1.可上传图片到uploads目录. 2.可浏览和评论图片(用富文本编辑器输入) 二.梳理一下相关知识: 1.iris框架(模板输出,session) 2.富文本编辑器.sql ...
- 基于Python+Sqlite3实现最简单的CRUD
一.基本描述 使用Python,熟悉sqlite3的基本操作(查插删改),以及基本数据类型.事务(ACID). 准备工作:在sqlite3的官网上下载预编译的sqlite文件(windows) ...
- golang学习笔记16 beego orm 数据库操作
golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...
- golang开发缓存组件
代码地址github:cache 花了一天时间看了下实验楼的cache组件,使用golang编写的,收获还是蛮多的,缓存组件的设计其实挺简单的,主要思路或者设计点如下: 全局struct对象:用来做缓 ...
- SQLite3 学习笔记
1.数据存储方式 Plist(NSArray\NSDictionary) Preference(偏好设置\NSUserDefaults) NSCoding(NSKeyedArchiver\NSkeye ...
随机推荐
- CentOS7安装maven3.6.1
1.下载maven的tar.gz安装包 2.移到centos7中并解压 tar -xzvf maven.tar.gz 3.开始配置maven环境变量,通过命令 vim /etc/profile 4.配 ...
- 实现网络数据提取你需要哪些java知识
本篇对一些常用的java知识做一个整合,三大特性.IO操作.线程处理.类集处理,目的在于能用这些只是实现一个网页爬虫的功能. Ⅰ 首先对于一个java开发的项目有一个整体性的了解认知,项目开发流程: ...
- OpenCV 线条及形状
1.线条 # dst 相当于画板 dst=np.zeros((300,300,3),np.uint8) # #参1 图像 参2 起始点 参3 结束点 参4 颜色 line=cv2.line(dst,( ...
- python 版本升级
python 版本升级 升级python 查看python的版本 python -V Python 2.6.6 下载新版本 wget https://www.python.org/ftp/python ...
- Mysql使用优化之处(转)
1 开启事务之前需要rollback 连接句柄.(清理垃圾)2 mysql_ping 失败,程序需要处理重连逻辑:3 mysql_query()执行的SQL语句是一个以‘/0’结尾的字符串,而mysq ...
- MySQL5.7多实例自动化部署脚本
一.安装说明 ------------------------------------------------------ mysql5.7.10_onekey_install.sh自动化部署脚本支持 ...
- C++设计模式 ==> 策略模式与简单工厂模式结合
简介 策略模式相较之于简单工厂模式适用于生产方法经常变化且方法较为繁多的情况,因为生产方法时常变化就会需要频繁修改工厂类,违背了开闭原则,这时就可以用策略选择类由客户端根据需求动态切换策略.且策略模式 ...
- 关于mybatis反向生成为什么有时候实体类会变成两个
一般来说,将TEXT字段,从一张操作频繁的表中拆分出去,成为一个Key-Value结构的独立表是 好处颇多的. 其有利之处主要体现在下面三个方面: PS:以下的讨论对象均基于Innodb引擎 1. 便 ...
- October 28th, 2017 Week 43rd Saturday
All I ever wanted was a single thing worth fighting for. 我想要的只不过是一件能让我奋不顾身的事业. Stop complaining the ...
- PyQt5--QColorDiaglog
# -*- coding:utf-8 -*- ''' Created on Sep 17, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...