Go——Sqlite数据库增删改查基本操作

本文通过一个Go语言程序实例,展示了如何使用Go语言连接SQLite3数据库,包括数据库的创建、表的创建、数据的插入、更新、查询和删除等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序如下:

package main

//利用_可以完成包的只初始化,不引用,仅仅是是希望它执行init()函数
import (
	"database/sql"
	"fmt"
	_ "github.com/mattn/go-sqlite3"
	"time"
)

func main() {
	//打开数据库 test.db,如果不存在,则创建
	//【注意:这里创建的数据库的名字是 test.db,不是 test】
	db, err := sql.Open("sqlite3", "./test.db")
	checkErr(err)


	//创建表 userinfo
	sqlTable := `
    CREATE TABLE IF NOT EXISTS userinfo(
        uid INTEGER PRIMARY KEY AUTOINCREMENT,
        username VARCHAR(64) NULL,
        department VARCHAR(64) NULL,
        created DATE NULL
    );
    `

	db.Exec(sqlTable)

	//插入
	stmt, err := db.Prepare("INSERT INTO userinfo(username, department, created) values(?,?,?)")
	checkErr(err)
	createdNow :=time.Now()
	res, err := stmt.Exec("wyj", "软件开发", createdNow)
	checkErr(err)
	id, err := res.LastInsertId()
	checkErr(err)
	fmt.Println("刚刚新增数据的ID是:", id)

	//更新
	stmt, err = db.Prepare("update userinfo set username=? where uid=?")
	checkErr(err)

	res, err = stmt.Exec("wyj_new", id)
	checkErr(err)

	affect, err := res.RowsAffected()
	checkErr(err)

	fmt.Println("更新操作影响的行数为:", affect)

	//查找所有
	rows, err := db.Query("SELECT * FROM userinfo")
	checkErr(err)
	var uid int
	var username string
	var department string
	var created time.Time

	//Next() 迭代查询数据
	for rows.Next() {
		//Scan() 读取每一行的值
		err = rows.Scan(&uid, &username, &department, &created)
		checkErr(err)
		fmt.Println("userinfo 数据表中所有数据信息如下:\n", uid, username, department, created)
	}

	//defer stmt.Close()
	//defer rows.Close()

	//删除
	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)

	stmt.Close()
	rows.Close()

	//删除数据库表,此处可无
	_, err = db.Exec("DROP TABLE userinfo")
	fmt.Println(err)
	checkErr(err)

	defer db.Close()
}
func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

运行结果如下:

在这里插入图片描述

发现一个问题:有时候运行此程序打印输出不全面,会有部分信息没打印出来!
不知道是 go 的哪个机制搞的鬼
如果有知道怎么回事或者怎么解决的欢迎留言哟~

♥ 喜 欢 请 点 赞 哟 ♥
(●ˇ∀ˇ●)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九思梦鹿

喜欢,请记得点赞或赞赏哟

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

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

打赏作者

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

抵扣说明:

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

余额充值