golang sqlite3 纯go

发布时间:2024-12-23 05:49:23

在现代软件开发中,数据库是不可或缺的一环。而SQLite是一个小巧、高效的嵌入式数据库引擎,被广泛应用于各个领域。对于Golang开发者来说,使用纯Go语言实现的SQLite3驱动程序是一种非常便捷的选择。本文将介绍如何使用golang-sqlite3包进行SQLite3数据库的操作。

连接数据库

要开始使用SQLite3数据库,首先需要连接到数据库。在Golang中,可以使用github.com/mattn/go-sqlite3包进行驱动程序注册和数据库连接的操作。首先,需要引入此包:

import ( "database/sql" _"github.com/mattn/go-sqlite3" )

Golang的database/sql包提供了强大的抽象层,可以与各种数据库进行交互。下面的代码展示了如何连接到SQLite3数据库:

func main() { db, err := sql.Open("sqlite3", "./test.db") if err != nil { log.Fatal(err) } defer db.Close() }

创建表

一旦连接到了SQLite3数据库,就可以开始创建表格来存储数据。在Golang中,可以直接使用SQL语句来执行数据库操作。例如,下面的代码片段演示了如何创建一个"user"表:

_, err := db.Exec(`CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INT )`)

以上代码定义了一个名为"user"的表,其中包含id、name和age三个字段。id是主键,并使用自增方式生成。

插入和查询数据

一旦表格创建完成,就可以开始插入和查询数据。下面的代码演示了如何向"user"表中插入一条数据:

stmt, err := db.Prepare("INSERT INTO user(name, age) VALUES(?, ?)") if err != nil { log.Fatal(err) } defer stmt.Close() result, err := stmt.Exec("John", 25) if err != nil { log.Fatal(err) } lastInsertID, _ := result.LastInsertId() rowsAffected, _ := result.RowsAffected()

以上代码首先使用Prepare函数预编译SQL语句,然后使用Exec函数将数据插入到"user"表中。最后,可以通过LastInsertId函数获取插入数据的最新ID,以及通过RowsAffected函数获取受影响的行数。

接下来,可以执行查询操作来检索数据。以下代码片段展示了如何查询"user"表中的所有数据:

rows, err := db.Query("SELECT * FROM user") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string var age int err = rows.Scan(&id, &name, &age) if err != nil { log.Fatal(err) } fmt.Println(id, name, age) } err = rows.Err() if err != nil { log.Fatal(err) }

以上代码通过Query函数执行SQL查询,并使用Scan函数将结果保存到变量中。然后可以通过循环遍历的方式输出查询结果。

通过连接数据库、创建表格以及插入和查询数据,我们可以完成SQLite3数据库的基本操作。值得注意的是,在实际应用中,还需要考虑事务处理、错误处理等方面的细节。希望本文对于Golang开发者在使用golang-sqlite3进行SQLite3数据库操作方面提供了一些帮助。

相关推荐