• 系统: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包配置和使用相关推荐

  1. charles 安装 ssl_charles抓包配置

    charles介绍 charles是一款PC端的web代理工具,PC上的浏览器或者其他应用程序通过charles访问网络,charles会记录所有发送和接收的数据.在网络相关的开发过程中,前端/客户端 ...

  2. pdo sqlite_ sqlite2 pdo_mysql_php使用pdo连接sqlite3的配置示例

    本文实例讲述了php使用pdo连接sqlite3的配置方法.分享给大家供大家参考,具体如下: 刚刚开始使用php+sqlite 的时候,一直以为自己使用的是sqlite3 ,其实不是,php从php5 ...

  3. 端口隔离配置命令、端口镜像(抓包配置)详解(附图,建议PC观看)

    目录 一.端口隔离: 二.端口镜像:(抓包配置) (1)思科: (2)华为: 一.端口隔离: 实列:客户需求:pc1和pc2可以访问pc3,但pc1和pc2之间不能相互访问 (1)私有vlan--Pv ...

  4. 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 ...

  5. [转]在SSIS中,使用“包配置”时的常见错误与解析

    本文转自:http://www.cnblogs.com/invinboy/archive/2008/05/26/1034312.html 在以前的DTS中,在包的开发.测试.发布迁移过程中你必须手动的 ...

  6. ssis 包配置组织程序_如何停止失控的SSIS程序包

    ssis 包配置组织程序 There are many reasons for terminating a long running SSIS Package. Picture a scenario ...

  7. 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架

    一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...

  8. Java代码安装maven jar_Java中Maven项目导出jar包配置的示例代码

    具体代码如下所示: src/main/java src/main/resources ${project.build.directory} **/*.java src/test/java src/te ...

  9. 使用Fiddler5和雷电模拟器4.0.83的抓包配置

    使用Fiddler5和雷电模拟器4.0.83的抓包配置 工具 Fiddler配置 步骤 1.先将FD的证书导出到桌面 2.使用Git Bash工具,对证书进行修改 2.1在桌面右键,打开Git Bas ...

最新文章

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

热门文章

  1. Android体系结构
  2. 武邑中学2021高考成绩查询,武邑中学高考成绩
  3. $.extend用法
  4. 豆瓣电影:TOP250榜单爬虫
  5. 无线WiFi网络的密码破解攻防及原理详解
  6. Python数据分析——上海市二手房价格分析
  7. 韩立刚老师《计算机网络》笔记4
  8. https生成证书——keytool 用法总结
  9. 计算机视觉学习笔记(四)homography 单应性矩阵的理解及求解
  10. Anaconda环境GDAL库基于whl文件的配置方法