博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言中使用SQLite数据库
阅读量:5135 次
发布时间:2019-06-13

本文共 2054 字,大约阅读时间需要 6 分钟。

 

1、驱动

Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的

  • 支持database/sql接口,基于cgo(关于cgo的知识请参看官方文档或者本书后面的章节)写的
  • 不支持database/sql接口,基于cgo写的
  • 不支持database/sql接口,基于cgo写的

目前支持database/sql的SQLite数据库驱动只有第一个,我目前也是采用它来开发项目的。采用标准接口有利于以后出现更好的驱动的时候做迁移。

 

2、实例代码

示例的数据库表结构如下所示,相应的建表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 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)    }}

 

我们可以看到上面的代码和MySQL例子里面的代码几乎是一模一样的,唯一改变的就是导入的驱动改变了,然后调用sql.Open是采用了SQLite的方式打开。

转载于:https://www.cnblogs.com/lvdongjie/p/9555851.html

你可能感兴趣的文章
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
继承条款effecitve c++ 条款41-45
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
background-clip,background-origin
查看>>
【Linux】ping命令详解
查看>>