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