【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 ...
最新文章
- python如何去掉一个字符串两边的引号
- BRCM SDK 版本IPv6问题
- Python实现不规则txt文本数据读取并转换为csv文本
- web 小程序 ch4 小程序组件
- 2100 没有反弹shell_反弹shell | ncbash
- websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
- 用友 U9好不好???
- ong拼音汉字_拼音ong的正确发音
- uni app push 集成华为 及 调试
- 三国志战略版:先锋斥候广州行
- 向量加减法首尾规律_向量的加减法
- Linux下deamon(服务)的实现
- linux系统安装文网卫士,360主机卫士 linux版的安装/使用/卸载 方法
- 词典GoldenDict
- OpenStack安装Placement组件部署(四)
- nodejs 传递参数
- 肘关节附属运动测试软件,肘关节运动学(一)
- 手把手教你搭建Kubernetes集群
- EasyBuy项目SpringSecurity权限控制流程笔记
- 小米“铁大”机器人大秀架子鼓,网友:有节奏没灵魂