在 go 中集成 sqlite 数据库既简单又直接,只需安装 database/sql 标准库包即可。步骤包括:建立连接、创建表、插入数据、查询数据、更新数据和删除数据。本文还提供了使用实战案例,展示了如何创建数据库、模型和操作数据,如插入、查找、更新和删除。
在 Go 中集成 SQLite 数据库
简介
SQLite 是一款轻量级且高效的关系型数据库引擎,广泛用于移动和嵌入式应用程序中。在 Golang 中集成 SQLite 数据库既简单又直接。本文将引导您完成这一过程,并提供一个实战案例。
立即学习“go语言免费学习笔记(深入)”;
安装
要使用 SQLite,您需要安装 database/sql 标准库包:
go get github.com/go-sql-driver/mysql
连接数据库
建立与 SQLite 数据库的连接非常简单:
import ( "database/sql" _ "github.com/mattn/go-sqlite3" ) func main() { db, err := sql.Open("sqlite3", "./mydb.db") if err != nil { // 处理错误 } }
创建表
使用 db.Exec() 方法创建表:
_, err := db.Exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)") if err != nil { // 处理错误 }
插入数据
使用 db.Prepare() 和 Stmt.Exec() 方法插入数据:
stmt, err := db.Prepare("INSERT INTO users (name, age) VALUES (?, ?)") if err != nil { // 处理错误 } _, err = stmt.Exec("John", 30) if err != nil { // 处理错误 }
查询数据
使用 db.Query() 方法查询数据:
rows, err := db.Query("SELECT * FROM users") if err != nil { // 处理错误 } for rows.Next() { var id int var name string var age int if err := rows.Scan(&id, &name, &age); err != nil { // 处理错误 } fmt.Println(id, name, age) }
更新数据
使用 db.Exec() 方法更新数据:
_, err := db.Exec("UPDATE users SET name = 'Jane' WHERE id = 1") if err != nil { // 处理错误 }
删除数据
使用 db.Exec() 方法删除数据:
_, err := db.Exec("DELETE FROM users WHERE id = 1") if err != nil { // 处理错误 }
实战案例
假设我们有一个名为 user 的数据结构:
type User struct { ID int Name string Age int }
创建数据库和模型
我们将创建 users.db 数据库、User 表和 UserModel 模型。
func main() { db, err := sql.Open("sqlite3", "./users.db") if err != nil { // 处理错误 } defer db.Close() sql := ` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER ); ` if _, err := db.Exec(sql); err != nil { // 处理错误 } } type UserModel struct { DB *sql.DB } func NewUserModel(db *sql.DB) *UserModel { return &UserModel{DB: db} }
插入数据
func (u *UserModel) Create(user *User) error { stmt, err := u.DB.Prepare("INSERT INTO users (name, age) VALUES (?, ?)") if err != nil { return err } defer stmt.Close() _, err = stmt.Exec(user.Name, user.Age) return err }
查询数据
func (u *UserModel) FindByID(id int) (*User, error) { stmt, err := u.DB.Prepare("SELECT * FROM users WHERE id = ?") if err != nil { return nil, err } defer stmt.Close() row := stmt.QueryRow(id) user := &User{} if err := row.Scan(&user.ID, &user.Name, &user.Age); err != nil { if err == sql.ErrNoRows { return nil, nil } return nil, err } return user, nil }
更新数据
func (u *UserModel) Update(user *User) error { stmt, err := u.DB.Prepare("UPDATE users SET name = ?, age = ? WHERE id = ?") if err != nil { return err } defer stmt.Close() _, err = stmt.Exec(user.Name, user.Age, user.ID) return err }
删除数据
func (u *UserModel) Delete(id int) error { stmt, err := u.DB.Prepare("DELETE FROM users WHERE id = ?") if err != nil { return err } defer stmt.Close() _, err = stmt.Exec(id) return err }
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Golang框架如何集成SQLite数据库?
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Golang框架如何集成SQLite数据库?