为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 数据库 正文

Golang使用SQLite3数据库

三叶资源网 2022-08-16 21:18:50 数据库 228 ℃ 0 评论

最近在做软路由,需要保存一些设置,一开始打算选择json来保存,但是在开发的过程中发现很多数据之间关联比较多,故打算选择一个数据库来保存。

SQLite3简介

SQLite3是一个轻型的嵌入式数据库引擎,占用资源非常低,专门用于移动设备上进行适量的数据存取,它只是一个文件,不需要服务器进程,所有的操作都来自于程序本身。

Go操作SQLite3数据库

Go操作SQLite3数据库,需要使用github.com/mattn/go-sqlite3这个库,在使用SQLite3创建数据库连接,当我们指定的数据库文件不存在的时候连接对象会自动创建数据库文件;如果数据库文件已近存在,则连接对象不会再创建数据库文件,而是直接打开该数据库文件。

先引入sql与sqlite3库

import (
 "database/sql"
 "fmt"
 _ "github.com/mattn/go-sqlite3"
)

打开数据库

var db *sql.DB
func ConnectDB() error {
 var err error
 db, err = sql.Open("sqlite3", "./router.db")
 if err != nil {
 return err
 }
 if err = db.Ping(); err != nil {
 return err
 }
 return nil
}

写SQL语句时,不区分大小写,每条语句后需加;结尾。

操作数据库表数据:增删改查

package main
import (
 "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 int
 var username string
 var department string
 var created string
 err = 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)
 }
}

go-sqlite3编译问题

  • Sqlite3是由C实现的,在GO中编译SQLite3时必须set CGO_ENABLED=1
  • 在UBUNTU下编译需要 apt-get install libsqlite3-dev

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
群号转链接置入汇编炫彩界面mysql管理工具三叶资源网htmlHelpJS分析批量修改源码格式化枚举文件点菜系统TCP调试易语言直尺工具源码运算模块GDI+个人发卡咪咕音乐图片旋转工具JS教程腾讯url.cn短网址
最新评论