go使用SQLite数据库
SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite是绝对值得考虑。SQLite可以是说开源的Access。
驱动
Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的
- https://github.com/mattn/go-sqlite3 支持database/sql接口,基于cgo(关于cgo的知识请参看官方文档或者本书后面的章节)写的
- https://github.com/feyeleanor/gosqlite3 不支持database/sql接口,基于cgo写的
- https://github.com/phf/go-sqlite3 不支持database/sql接口,基于cgo写的
目前支持database/sql的SQLite数据库驱动只有第一个,我目前也是采用它来开发项目的。采用标准接口有利于以后出现更好的驱动的时候做迁移。
实例代码
示例的数据库表结构如下所示,相应的建表SQL:
CREATE TABLE `userinfo` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT,`username` VARCHAR(64) NULL,`departname` VARCHAR(64) NULL,`created` DATE NULL
);CREATE TABLE `userdeatail` (`uid` INT(10) NULL,`intro` TEXT NULL,`profile` TEXT NULL,PRIMARY KEY (`uid`)
);
看下面Go程序是如何操作数据库表数据:增删改查
package mainimport ("database/sql""fmt"_ "github.com/mattn/go-sqlite3"
)func main() {db, err := sql.Open("sqlite3", "./foo.db")checkErr(err)//插入数据stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)")checkErr(err)res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")checkErr(err)id, err := res.LastInsertId()checkErr(err)fmt.Println(id)//更新数据stmt, err = db.Prepare("update userinfo set username=? where uid=?")checkErr(err)res, err = stmt.Exec("astaxieupdate", id)checkErr(err)affect, err := res.RowsAffected()checkErr(err)fmt.Println(affect)//查询数据rows, err := db.Query("SELECT * FROM userinfo")checkErr(err)for rows.Next() {var uid intvar username stringvar department stringvar created stringerr = rows.Scan(&uid, &username, &department, &created)checkErr(err)fmt.Println(uid)fmt.Println(username)fmt.Println(department)fmt.Println(created)}//删除数据stmt, err = db.Prepare("delete from userinfo where uid=?")checkErr(err)res, err = stmt.Exec(id)checkErr(err)affect, err = res.RowsAffected()checkErr(err)fmt.Println(affect)db.Close()}func checkErr(err error) {if err != nil {panic(err)}
}
我们可以看到上面的代码和MySQL例子里面的代码几乎是一模一样的,唯一改变的就是导入的驱动改变了,然后调用sql.Open
是采用了SQLite的方式打开。
go使用SQLite数据库相关推荐
- android数据库isnull,Android中SQLite数据库知识点总结
SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需 ...
- C++ VS2013环境编译使用sqlite数据库全过程
转载:http://www.cnblogs.com/imoon/archive/2012/11/30/2796726.html 转载:https://blog.csdn.net/hjm4702192/ ...
- android 数据库索引,SQLite数据库提供警告自动索引(列)升级Android L后
我已经升级了我的Nexus 7与Android 5.0 Lollipop,之前,我的应用程序运行良好与SQLite数据库,但现在每当我执行任何类型的查询,它给我log cat错误,如: 12-09 1 ...
- 操作SQLite数据库
本文摘自: http://docs.blackberry.com/en/developers/deliverables/25108/Creating_and_deleting_SQLite_datab ...
- 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...
- sqlite数据库测试类基本使用
2019独角兽企业重金招聘Python工程师标准>>> sqlite数据库测试类的基本使用 1.在清单里配置权限和引入单元测试框架 代码 <?xml version=" ...
- sqlite java excel,Android将Excel表数据导入SQLite数据库
前两天接了个私活,需求方给了一个Excel表格,需要使用到里面的7000+条数据进行查询,最开始以为7000条一条条加入数据库也还好,以下是其中一部分数据: 但当我添加了20多条的时候突然发现这样的方 ...
- android模拟器的数据存放,Android模拟器在哪里存储SQLite数据库?
Android模拟器在哪里存储SQLite数据库? 我正在开发一个将数据存储在SQLite数据库中的Android应用程序. 我的问题是,当您使用模拟器时,此数据库文件存储在文件系统中的哪个位置? 我 ...
- Android数据库 之 SQLite数据库
一.关系型数据库SQLIte 每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库-SQLite.SQLite第一个Alpha版本诞生于20 ...
最新文章
- SAP S4 HANA-The future is here?
- 【python】使用plt.imshow(image)显示图片一片空白,像素值有数据
- nslookup type值_nslookup查询
- 【华为云技术分享】直播回顾丨激发数据裂变新动能,HDC.Cloud云数据库前沿技术解读
- AMD第七代桌面APU揭秘:主流首次上DDR4
- 《Linux内核设计与实现》读书笔记(12)--- 内存管理(2)
- python中标点符号大全_Python处理中文标点符号大集合
- centos vim编辑器 第八节课
- PPT绘图保存为PDF的三种方式
- RunTime之类与对象
- 拓端tecdat|【视频】R语言广义相加模型(GAM)在电力负荷预测中的应用
- 2021-08-20 JSP JSTL标签
- 【lpxt】笔者支招:九招搞定显示器黑屏
- 求三维空间中的三角形外接圆圆心坐标的算法
- 你知道吗?计算机界也有诺贝尔奖!
- 微信赌场——H5棋牌游戏渗透之旅
- 阿里云服务器接入云盾Web应用防火墙教程
- Unity代码调用网络摄像头WebCamTexture
- android gridview 详解,Android GridView九宫图
- S7-200SMART案例分析——运动控制编程(三)
热门文章
- 【错误记录】Android 内存泄漏 错误排查记录 ( FinalizerReference 内存泄漏 )
- 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )
- 3组现代软件工程第三次作业
- 17.4.28 清北第一天水题
- jsonp解析 html
- 鼠标位置精确定位总结
- stm32_CAN总线知识
- windows server backup
- 概述Nod32的部署
- IOS7为什么遭吐槽?