go之操作sqlite数据库

package main

import (
	"database/sql"
	"fmt"
	"time"

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

func main() {
	db, err := sql.Open("sqlite3", "./test.db")
	checkErr(err)

	//插入数据
	stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) values (?,?,?)")
	checkErr(err)
	res, err := stmt.Exec("张三丰", "研发部", "2024-09-13")
	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("赵无极", 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 departname string
		var created time.Time
		err = rows.Scan(&uid, &username, &departname, &created)
		checkErr(err)
		fmt.Println(uid)
		fmt.Println(username)
		fmt.Println(departname)
		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)
	}
}

数据库sql:

CREATE table 'userinfo' (
'uid' integer PRIMARY key AUTOINCREMENT,
'username' varchar(64) NULL,
'departname' varchar(64) NULL,
'created' date NULL
);


CREATE table 'userdetail' (
'uid' int(10) NULL,
'intro' text NULL,
'profile' text NULL,
PRIMARY key  'uid'
);

遇到的小问题:

a.could not import github.com/mattn/go-sqlite3 (no required module provides package)

解决方法:1.运行 go mod tidy 来清理模块文件

                   2.重新下载模块,使用命令 go get -u github.com/mattn/go-sqlite3

b.panic:Binary was compiled with ‘CGO_ENABLED=0‘, go-sglite3 requires cgo to work. This is a stub

解决方法:缺少gcc环境,安装环境

官网地址:tdm-gcc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿只小灿灿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值