学习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语言的相关知识。