golang操作sqlite数据库

Posted yubo_725

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang操作sqlite数据库相关的知识,希望对你有一定的参考价值。

go-sqlite3开源库地址:

https://github.com/mattn/go-sqlite3

使用方法代码如下:

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/mattn/go-sqlite3"
)

const (
	dbDriverName = "sqlite3"
	dbName       = "./data.db3"
)

type user struct 
	Username string
	Age      int
	Job      string
	Hobby    string


func main() 
	db, err := sql.Open(dbDriverName, dbName)
	if checkErr(err) 
		return
	
	err = createTable(db)
	if checkErr(err) 
		return
	
	// err = insertData(db, user"zhangsan", 28, "engineer", "play football")
	// if checkErr(err) 
	// 	return
	// 
	res, err := queryData(db, "zhangsan")
	if checkErr(err) 
		return
	
	fmt.Println(len(res))
	for _, val := range res 
		fmt.Println(val)
	
	r, err := delByID(db, 1)
	if checkErr(err) 
		return
	
	if r 
		fmt.Println("delete row success")
	


func createTable(db *sql.DB) error 
	sql := `create table if not exists "users" (
		"id" integer primary key autoincrement,
		"username" text not null,
		"age" integer not null,
		"job" text,
		"hobby" text
	)`
	_, err := db.Exec(sql)
	return err


func insertData(db *sql.DB, u user) error 
	sql := `insert into users (username, age, job, hobby) values(?,?,?,?)`
	stmt, err := db.Prepare(sql)
	if err != nil 
		return err
	
	_, err = stmt.Exec(u.Username, u.Age, u.Job, u.Hobby)
	return err


func queryData(db *sql.DB, name string) (l []user, e error) 
	sql := `select * from users`
	stmt, err := db.Prepare(sql)
	if err != nil 
		return nil, err
	
	rows, err := stmt.Query()
	if err != nil 
		return nil, err
	
	var result = make([]user, 0)
	for rows.Next() 
		var username, job, hobby string
		var age, id int
		rows.Scan(&id, &username, &age, &job, &hobby)
		result = append(result, userusername, age, job, hobby)
	
	return result, nil


func delByID(db *sql.DB, id int) (bool, error) 
	sql := `delete from users where id=?`
	stmt, err := db.Prepare(sql)
	if err != nil 
		return false, err
	
	res, err := stmt.Exec(id)
	if err != nil 
		return false, err
	
	_, err = res.RowsAffected()
	if err != nil 
		return false, err
	
	return true, nil


func checkErr(e error) bool 
	if e != nil 
		log.Fatal(e)
		return true
	
	return false


以上是关于golang操作sqlite数据库的主要内容,如果未能解决你的问题,请参考以下文章

SQLite、Golang 和联结表

golang sqlite3 CRUD

纯golang+sqlite3 CRUD

亲测可用的golang sql例程与包管理

Golang/gin:如何将 db 传递给路由器功能

golang使用json格式实现增删查改