学习Go语言中的数据库函数并实现SQLite数据的增删改查操作

学习Go语言中的数据库函数并实现SQLite数据的增删改查操作

在Go语言中,操作数据库最常用的库是database/sql和对应的驱动程序,例如:github.com/mattn/go-sqlite3。本文将介绍如何使用Go语言中数据库函数,来实现SQLite的数据增删改查。

1.导入SQL驱动

在Go语言中,使用database/sql和具体的驱动程序来操作数据库,因此需要先导入相应的驱动程序。

import (

"database/sql"

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

)

上面代码中通过import语句导入了database/sql和go-sqlite3驱动。

2.打开SQLite数据库

使用Go语言中的Open函数,打开SQLite数据库。

db, err := sql.Open("sqlite3", "./test.db")

if err != nil {

panic(err)

}

defer db.Close()

Open函数的第一个参数是驱动名称,第二个参数是数据库文件路径。

这里使用了defer语句,确保在函数调用结束之前,数据库连接能够正确关闭。

3.创建表格

在SQLite中,使用CREATE TABLE语句来创建表格。

stmt, err := db.Prepare(`

CREATE TABLE IF NOT EXISTS userinfo (

uid INTEGER PRIMARY KEY AUTOINCREMENT,

username VARCHAR(64) NULL,

department VARCHAR(64) NULL,

created DATE NULL

);

`)

if err != nil {

panic(err)

}

defer stmt.Close()

_, err = stmt.Exec()

if err != nil {

panic(err)

}

上面代码中,使用Prepare函数准备执行CREATE TABLE语句,然后使用stmt.Exec()函数执行该语句创建表格。

Execute函数为执行SQL语句方法,当stmt为查询语句时,则返回结果集,同时stmt关闭时,所得到的结果集结果将不再可用,此时sql.Rows.Close方法将被自动调用,以确保连接不继续被占用。

4.插入数据

在SQLite中,使用INSERT INTO语句来插入数据。

stmt, err = db.Prepare(`

INSERT INTO userinfo(username, department, created)

VALUES (?, ?, ?)

`)

if err != nil {

panic(err)

}

defer stmt.Close()

_, err = stmt.Exec("testuser", "testdept", "2021-01-01")

if err != nil {

panic(err)

}

上面代码中,使用Prepare函数准备执行INSERT INTO语句,然后使用stmt.Exec()函数执行该语句插入数据。

需要注意的是,在执行INSERT语句时,DataFrame的值必须与列的类型匹配。

5.查询数据

在SQLite中,使用SELECT语句来查询数据。

rows, err := db.Query(`

SELECT uid, username, department, created

FROM userinfo

`)

if err != nil {

panic(err)

}

defer rows.Close()

for rows.Next() {

var (

uid int

username string

department string

created string

)

if err := rows.Scan(&uid, &username, &department, &created); err != nil {

panic(err)

}

fmt.Println(uid, username, department, created)

}

上面代码中,使用db.Query()函数执行SELECT语句,然后使用Rows.Next()函数遍历结果集。

在遍历过程中,使用Scan()函数读取每一行的数据。

需要注意的是,在执行Scan()函数时,传入的参数必须与列的数据类型和数量匹配。

6.更新数据

在SQLite中,使用UPDATE语句来更新数据。

stmt, err = db.Prepare(`

UPDATE userinfo SET department = ? WHERE uid = ?

`)

if err != nil {

panic(err)

}

defer stmt.Close()

_, err = stmt.Exec("testdept_updated", 1)

if err != nil {

panic(err)

}

上面代码中,使用Prepare函数准备执行UPDATE语句,然后使用stmt.Exec()函数执行该语句更新数据。

UPDATE语句中,需要指定需要更新的行和列。

7.删除数据

在SQLite中,使用DELETE语句来删除数据。

stmt, err = db.Prepare(`

DELETE FROM userinfo WHERE uid = ?

`)

if err != nil {

panic(err)

}

defer stmt.Close()

_, err = stmt.Exec(1)

if err != nil {

panic(err)

}

上面代码中,使用Prepare函数准备执行DELETE语句,然后使用stmt.Exec()函数执行该语句删除数据。

DELETE语句中,需要指定需要删除的行和列。

总结

本文介绍了如何使用Go语言中的数据库函数操作SQLite数据库,包括创建表格、插入数据、查询数据、更新数据和删除数据等功能。

在使用这些功能时,需要注意使用正确的语句和传递正确的参数,以确保能够正确的执行操作。

如果您想更深入的了解SQL的用法和技巧,可以继续学习SQL语言的相关知识。

后端开发标签