ddxiami

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3058|回复: 0

go操作sqlite3

[复制链接]
发表于 2020-11-19 12:25:57 | 显示全部楼层 |阅读模式
#安装驱动
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go get -u -v github.com/mattn/go-sqlite3
======================================
package main

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

func main() {
  fmt.Println("打开数据")
  db, err := sql.Open("sqlite3", "./userDB.db") //若数据库没有在这个项目文件下,则需要写绝对路径
  checkErr(err)

  fmt.Println("生成数据表")
  //数据表除了在命令行提前进行创建,还可以在go程序中创建,如下:
  sql_table := `
CREATE TABLE IF NOT EXISTS "userinfo" (
  "uid" INTEGER PRIMARY KEY AUTOINCREMENT,
  "username" VARCHAR(64) NULL,
  "departname" VARCHAR(64) NULL,
  "created" TIMESTAMP default (datetime('now', 'localtime'))
);
CREATE TABLE IF NOT EXISTS "userdeatail" (
  "uid" INT(10) NULL,
  "intro" TEXT NULL,
  "profile" TEXT NULL,
  PRIMARY KEY (uid)
);`
  db.Exec(sql_table)//执行数据表

  //插入数据
  fmt.Print("插入数据, ID=")
  stmt, err := db.Prepare("INSERT INTO userinfo(username, departname)  values(?, ?)")
  checkErr(err)
  res, err := stmt.Exec("astaxie", "研发部门")
  checkErr(err)
  id, err := res.LastInsertId()//返回新增的id号
  checkErr(err)
  fmt.Println(id)

  //更新数据
  fmt.Println("更新数据 ")
  stmt, err = db.Prepare("update userinfo set username=? where uid=?")
  checkErr(err)
  res, err = stmt.Exec("astaxieupdate", id)//将新增的id的username修改为astaxieupdate
  checkErr(err)
  affect, err := res.RowsAffected()
  checkErr(err)
  fmt.Println(affect,"条数据被更新")

  //查询数据
  fmt.Println("查询数据")
  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, username, department, created)
  }

  //删除数据
  fmt.Println("删除数据,ID=")
  stmt, err = db.Prepare("delete from userinfo where uid=?")
  checkErr(err)
  res, err = stmt.Exec(id)//将想删除的id输入进去就可以删除输入的id
  checkErr(err)
  affect, err = res.RowsAffected()//几条数据受影响:返回int类型数据
  checkErr(err)
  fmt.Println(id)
  fmt.Println(affect,"条数据被删除")

  //查询数据:上面进行了删除新增的数据,所以并不知道当前数据有几条,再查询一次。
  fmt.Println("查询数据")
  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, username, department, created)
  }
  db.Close()
}

func checkErr(err error) {
  if err != nil {
    panic(err)
  }
}
======================================


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|技术文档库 ( 闽ICP备15017263号-2 )|网站地图

GMT+8, 2025-5-18 23:45 , Processed in 0.034729 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表