如何使用Go操作SQLite

Written by

in

文章目录
  • Go语言通过标准库database/sql结合第三方驱动可以方便地操作SQLite数据库。Go语言支持SQLite的驱动较多,但推荐使用支持database/sql接口的驱动,例如github.com/mattn/go-sqlite3。该驱动功能完善,兼容性强,是Go语言操作SQLite的主流选择。 官方文档:https://mattn.github.io/go-sqlite3/
  • 以下是一个完整的示例,包含上述所有操作: package main import ( “database/sql” “fmt” “log” _ “github.com/mattn/go-sqlite3” ) func main() { db, err := sql.Open(“sqlite3”, “./test.db”) if err != nil { log.Fatal(err) } defer db.Close() err = db.Ping() if err != nil { log.Fatal(err) } fmt.Println(“成功连接到SQLite数据库”) createTable(db) insertUser(db, “张三”, 25) insertUser(db, “李四”, 30) queryUsers(db) updateUser(db, 1, “张三改”, 26) queryUsers(db) deleteUser(db, 2) queryUsers(db) } func createTable(db *sql.DB) { query := ` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER );` _, err := db.Exec(query) if err != nil { log.Fatal(err) } fmt.Println(“表创建成功或已存在”) } func insertUser(db *sql.DB, name string, age int) { query := “INSERT INTO users (name, age) VALUES (?, ?);” result, err := db.Exec(query, name, age) if err != nil { log.Fatal(err) } id, _ := result.LastInsertId() fmt.Printf(“插入成功,用户ID: %dn”, id) } func queryUsers(db *sql.DB) { query := “SELECT id, name, age FROM users;” rows, err := db.Query(query) if err != nil { log.Fatal(err) } defer rows.Close() fmt.Println(“用户列表:”) 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.Printf(“ID: %d, 姓名: %s, 年龄: %dn”, id, name, age) } } func updateUser(db *sql.DB, id int, newName string, newAge int) { query := “UPDATE users SET name = ?, age = ? WHERE id = ?;” result, err := db.Exec(query, newName, newAge, id) if err != nil { log.Fatal(err) } rowsAffected, _ := result.RowsAffected() fmt.Printf(“更新成功,影响行数: %dn”, rowsAffected) } func deleteUser(db *sql.DB, id int) { query := “DELETE FROM users WHERE id = ?;” result, err := db.Exec(query, id) if err != nil { log.Fatal(err) } rowsAffected, _ := result.RowsAffected() fmt.Printf(“删除成功,影响行数: %dn”, rowsAffected) } 总结:Go语言通过database/sql和go-sqlite3驱动可以高效地操作SQLite数据库。上述代码涵盖了数据库连接、表操作以及增删改查的完整流程,适合作为学习Go语言操作SQLite的基础案例。 到此这篇关于如何使用Go操作SQLite的文章就介绍到这了,更多相关go 操作sqlite内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Golang使用sqlite3数据库实现CURD操作 Golang对sqlite3数据库进行操作实践记录 Go连接并操作SQLite数据库基本步骤 golang通过gorm操作sqlite设置主键自增的步骤 Golang操作sqlite3数据库的详细教程
  • 目录
    • 一、驱动选择
    • 二、数据库连接
      • 2.1 安装驱动
      • 2.2 连接数据库
    • 三、表操作
      • 3.1 创建表
      • 3.2 删除表
    • 四、增删改查操作
      • 4.1 插入数据
      • 4.2 查询数据
      • 4.3 更新数据
      • 4.4删除数据
    • 五、完整案例

      Go语言通过标准库database/sql结合第三方驱动可以方便地操作SQLite数据库。Go语言支持SQLite的驱动较多,但推荐使用支持database/sql接口的驱动,例如github.com/mattn/go-sqlite3。该驱动功能完善,兼容性强,是Go语言操作SQLite的主流选择。

      官方文档:https://mattn.github.io/go-sqlite3/

      首先,通过以下命令安装go-sqlite3驱动:

      go get github.com/mattn/go-sqlite3

      以下代码展示了如何连接SQLite数据库:

      package main
      import (
      	"database/sql"
      	"fmt"
      	"log"
      	_ "github.com/mattn/go-sqlite3"
      )
      func main() {
      	// 打开数据库连接,如果数据库不存在会自动创建
      	db, err := sql.Open("sqlite3", "./test.db")
      	if err != nil {
      		log.Fatal(err)
      	}
      	defer db.Close()
      	// 检查连接是否成功
      	err = db.Ping()
      	if err != nil {
      		log.Fatal(err)
      	}
      	fmt.Println("成功连接到SQLite数据库")
      }

      以下代码展示了如何创建一个用户表:

      func createTable(db *sql.DB) {
      	query := `
      	CREATE TABLE IF NOT EXISTS users (
      		id INTEGER PRIMARY KEY AUTOINCREMENT,
      		name TEXT NOT NULL,
      		age INTEGER
      	);`
      	_, err := db.Exec(query)
      	if err != nil {
      		log.Fatal(err)
      	}
      	fmt.Println("表创建成功或已存在")
      }

      如果需要删除表,可以使用以下代码:

      func dropTable(db *sql.DB) {
      	query := "DROP TABLE IF EXISTS users;"
      	_, err := db.Exec(query)
      	if err != nil {
      		log.Fatal(err)
      	}
      	fmt.Println("表删除成功")
      }

      以下代码展示了如何向用户表中插入数据:

      func insertUser(db *sql.DB, name string, age int) {
      	query := "INSERT INTO users (name, age) VALUES (?, ?);"
      	result, err := db.Exec(query, name, age)
      	if err != nil {
      		log.Fatal(err)
      	}
      	id, _ := result.LastInsertId()
      	fmt.Printf("插入成功,用户ID: %dn", id)
      }

      以下代码展示了如何查询用户表中的数据:

      func queryUsers(db *sql.DB) {
      	query := "SELECT id, name, age FROM users;"
      	rows, err := db.Query(query)
      	if err != nil {
      		log.Fatal(err)
      	}
      	defer rows.Close()
      	fmt.Println("用户列表:")
      	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.Printf("ID: %d, 姓名: %s, 年龄: %dn", id, name, age)
      	}
      }

      以下代码展示了如何更新用户表中的数据:

      func updateUser(db *sql.DB, id int, newName string, newAge int) {
      	query := "UPDATE users SET name = ?, age = ? WHERE id = ?;"
      	result, err := db.Exec(query, newName, newAge, id)
      	if err != nil {
      		log.Fatal(err)
      	}
      	rowsAffected, _ := result.RowsAffected()
      	fmt.Printf("更新成功,影响行数: %dn", rowsAffected)
      }

      以下代码展示了如何删除用户表中的数据:

      func deleteUser(db *sql.DB, id int) {
      	query := "DELETE FROM users WHERE id = ?;"
      	result, err := db.Exec(query, id)
      	if err != nil {
      		log.Fatal(err)
      	}
      	rowsAffected, _ := result.RowsAffected()
      	fmt.Printf("删除成功,影响行数: %dn", rowsAffected)
      }

      以下是一个完整的示例,包含上述所有操作:

      package main
      import (
      	"database/sql"
      	"fmt"
      	"log"
      	_ "github.com/mattn/go-sqlite3"
      )
      func main() {
      	db, err := sql.Open("sqlite3", "./test.db")
      	if err != nil {
      		log.Fatal(err)
      	}
      	defer db.Close()
      	err = db.Ping()
      	if err != nil {
      		log.Fatal(err)
      	}
      	fmt.Println("成功连接到SQLite数据库")
      	createTable(db)
      	insertUser(db, "张三", 25)
      	insertUser(db, "李四", 30)
      	queryUsers(db)
      	updateUser(db, 1, "张三改", 26)
      	queryUsers(db)
      	deleteUser(db, 2)
      	queryUsers(db)
      }
      func createTable(db *sql.DB) {
      	query := `
      	CREATE TABLE IF NOT EXISTS users (
      		id INTEGER PRIMARY KEY AUTOINCREMENT,
      		name TEXT NOT NULL,
      		age INTEGER
      	);`
      	_, err := db.Exec(query)
      	if err != nil {
      		log.Fatal(err)
      	}
      	fmt.Println("表创建成功或已存在")
      }
      func insertUser(db *sql.DB, name string, age int) {
      	query := "INSERT INTO users (name, age) VALUES (?, ?);"
      	result, err := db.Exec(query, name, age)
      	if err != nil {
      		log.Fatal(err)
      	}
      	id, _ := result.LastInsertId()
      	fmt.Printf("插入成功,用户ID: %dn", id)
      }
      func queryUsers(db *sql.DB) {
      	query := "SELECT id, name, age FROM users;"
      	rows, err := db.Query(query)
      	if err != nil {
      		log.Fatal(err)
      	}
      	defer rows.Close()
      	fmt.Println("用户列表:")
      	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.Printf("ID: %d, 姓名: %s, 年龄: %dn", id, name, age)
      	}
      }
      func updateUser(db *sql.DB, id int, newName string, newAge int) {
      	query := "UPDATE users SET name = ?, age = ? WHERE id = ?;"
      	result, err := db.Exec(query, newName, newAge, id)
      	if err != nil {
      		log.Fatal(err)
      	}
      	rowsAffected, _ := result.RowsAffected()
      	fmt.Printf("更新成功,影响行数: %dn", rowsAffected)
      }
      func deleteUser(db *sql.DB, id int) {
      	query := "DELETE FROM users WHERE id = ?;"
      	result, err := db.Exec(query, id)
      	if err != nil {
      		log.Fatal(err)
      	}
      	rowsAffected, _ := result.RowsAffected()
      	fmt.Printf("删除成功,影响行数: %dn", rowsAffected)
      }

      总结:Go语言通过database/sqlgo-sqlite3驱动可以高效地操作SQLite数据库。上述代码涵盖了数据库连接、表操作以及增删改查的完整流程,适合作为学习Go语言操作SQLite的基础案例。

      到此这篇关于如何使用Go操作SQLite的文章就介绍到这了,更多相关go 操作sqlite内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • Golang使用sqlite3数据库实现CURD操作
      • Golang对sqlite3数据库进行操作实践记录
      • Go连接并操作SQLite数据库基本步骤
      • golang通过gorm操作sqlite设置主键自增的步骤
      • Golang操作sqlite3数据库的详细教程

      站内搜索