【Go】sqlite3包配置和使用
- 系统:Win10
- IDE:VsCode
1 初始化mod
在项目中先初始化mod(已经初始化过则忽略),打开终端(快捷键Ctrl+Shift+~)执行go mod init xxx
(xxx为文件夹名)。
2 获取sqlite3
在golang官网的pkg搜索sqlite3,搜索到的第一个包,复制地址github.com/mattn/go-sqlite3
;
回到终端,输入go get -u github.com/mattn/go-sqlite3
,go get -u命令会将项目中的包升级到最新的次要版本或者修订版本;
有可能会因为网络原因导致失败,可以多试几次,或者更改代理:
- 首先
set GO111MODULE=on
或者set GO111MODULE=auto
,如果已经是这两者之一则不需要重复执行 - 再执行
set GOPROXY=https://goproxy.cn,direct
,这个设置或许会解决你的get不了的问题,实在不行只有改源码了
成功获取sqlite包会输出:go: added github.com/mattn/go-sqlite3 v1.14.12
3 使用
import _ "github.com/mattn/go-sqlite3"
测试代码
func InitOpen() {db, err := sql.Open("sqlite3", "./user.db")checkErr(err)fmt.Println("创建数据表")sql_table := `CREATE TABLE IF NOT EXISTS "student"("name" VARCHAR(64) NULL,"age" VARCHAR(64) NULL,"class" VARCHAR(64) NULL)`db.Exec(sql_table)//插入数据stmt, err := db.Prepare("INSERT INTO student(name, age, class) values(?,?,?)")checkErr(err)res, err := stmt.Exec("小明", "12", "六年级一班")checkErr(err)id, err := res.LastInsertId()checkErr(err)fmt.Println(id)
}
func checkErr(err error) {if err != nil {panic(err)}
}
调用后会生成user.db这个文件
4 go中使用sqlite常用语法
4.1 打开/创建数据库
db, err := sql.Open("sqlite3", "./user.db")
checkErr(err)
参数:
- 数据库类型
- 数据库路径以及文件名
返回值:
- *sql.DB
- error
4.2 创建数据表
sql_table := `CREATE TABLE IF NOT EXISTS "student"("uid" INTEGER PRIMARY KEY AUTOINCREMENT,"name" VARCHAR(64) NULL,"age" VARCHAR(64) NULL,"class" VARCHAR(64) NULL,"created" DATE NULL)`db.Exec(sql_table)
语句含义为:如果该表不存在则创建表;
表名为:student
表中元素:
uid:int类型,一个自增长的id
name:char类型,大小为64,内容初始化为空
age:同上
class:同上
created:日期类型的创建时间
4.3 插入数据
stmt, err := db.Prepare("INSERT INTO student(name, age, class, created) values(?,?,?,?)")checkErr(err)res, err := stmt.Exec("小明", "12", "六年级一班","2022-02-22")checkErr(err)//返回数据库生成的整数。当插入新行时,自动递增id, err := res.LastInsertId()checkErr(err)fmt.Println(id)
将"小明", “12”, “六年级一班”,"2022-02-22"四个元素插入表中对应列,通过Exec
来执行
4.4 删除数据
stmt, err = db.Prepare("delete from student where uid=?")checkErr(err)res, err = stmt.Exec(1)checkErr(err)
将uid对应位置的整条数据删除
4.5 更新数据
stmt, err = db.Prepare("update student set name=? where uid=?")checkErr(err)res, err = stmt.Exec("小蓝", 3)checkErr(err)affect, err := res.RowsAffected() //返回受影响的行数。更新、插入、删除checkErr(err)fmt.Println(affect)
将uid对应位置的name值改为”小蓝“
4.6 查询数据
//查询数据rows, err := db.Query("select * from student")checkErr(err)for rows.Next() {var uid intvar name stringvar age stringvar class stringvar createdDate stringerr = rows.Scan(&uid, &name, &age, &class, &createdDate)checkErr(err)fmt.Println(uid)fmt.Println(name)fmt.Println(age)fmt.Println(class)fmt.Println(createdDate)}
⭐注意⭐
- 操作表时,表名要加双引号,避免表名是数字等特殊字符,导致无法创建或连接等;
【Go】sqlite3包配置和使用相关推荐
- charles 安装 ssl_charles抓包配置
charles介绍 charles是一款PC端的web代理工具,PC上的浏览器或者其他应用程序通过charles访问网络,charles会记录所有发送和接收的数据.在网络相关的开发过程中,前端/客户端 ...
- pdo sqlite_ sqlite2 pdo_mysql_php使用pdo连接sqlite3的配置示例
本文实例讲述了php使用pdo连接sqlite3的配置方法.分享给大家供大家参考,具体如下: 刚刚开始使用php+sqlite 的时候,一直以为自己使用的是sqlite3 ,其实不是,php从php5 ...
- 端口隔离配置命令、端口镜像(抓包配置)详解(附图,建议PC观看)
目录 一.端口隔离: 二.端口镜像:(抓包配置) (1)思科: (2)华为: 一.端口隔离: 实列:客户需求:pc1和pc2可以访问pc3,但pc1和pc2之间不能相互访问 (1)私有vlan--Pv ...
- linux打包java jar_在linux环境下修改可运行jar包配置并重新打包
在linux环境下修改可运行jar包配置并重新打包步骤: 1)mkdir xxx 2)mv XXX.jar XXX 3)jar xvf XXX.jar 4)mv XXX.jar ../ 5)vi XX ...
- [转]在SSIS中,使用“包配置”时的常见错误与解析
本文转自:http://www.cnblogs.com/invinboy/archive/2008/05/26/1034312.html 在以前的DTS中,在包的开发.测试.发布迁移过程中你必须手动的 ...
- ssis 包配置组织程序_如何停止失控的SSIS程序包
ssis 包配置组织程序 There are many reasons for terminating a long running SSIS Package. Picture a scenario ...
- 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架
一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...
- Java代码安装maven jar_Java中Maven项目导出jar包配置的示例代码
具体代码如下所示: src/main/java src/main/resources ${project.build.directory} **/*.java src/test/java src/te ...
- 使用Fiddler5和雷电模拟器4.0.83的抓包配置
使用Fiddler5和雷电模拟器4.0.83的抓包配置 工具 Fiddler配置 步骤 1.先将FD的证书导出到桌面 2.使用Git Bash工具,对证书进行修改 2.1在桌面右键,打开Git Bas ...
最新文章
- 北京大学AI写作机器人来了,会替代记者?
- linux下动态库(*.so)的路径问题
- java 大端字节序_理解字节序 大端字节序和小端字节序
- MobileNet、GhostNet理解及测试
- Python小练习1:.txt文件常用读写操作
- keepalived实现应用高可用
- 【解决方案】kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
- 二叉树:你真的会翻转二叉树么?
- printf 输出格式
- raid读写速度对比_组建RAID 0前后的读写速度对比
- Happy GroundHog Day土拨鼠之日
- 福建食用菌产业博览会盛大开幕 谋定中国农民丰收节交易会
- 用tkinter实现BMI计算
- window.print()手动设置纸张的宽高
- 【突变检验方法一】MATLAB实现Pettitt突变检验
- macOS开发入门教程: Part 3
- linux内核uuid生成器测试
- 4、cloudsim仿真步骤
- Socket编程--自己动手的HTTP代理服务器
- Wedding Suite主题V2.6.4婚礼婚庆展示网站模板+WordPress内核