Go 语言 数据库操作之 SQL 语句执行方法

Go阿木 发布于 2025-06-22 5 次阅读


Go 语言数据库操作之 SQL 语句执行方法

Go 语言(也称为 Golang)因其简洁、高效和并发性能而受到广大开发者的喜爱。在处理数据库操作时,Go 语言提供了丰富的库和工具,使得数据库操作变得简单而高效。本文将围绕 Go 语言中的数据库操作,重点介绍 SQL 语句的执行方法,包括连接数据库、执行查询、插入、更新和删除操作等。

环境准备

在开始之前,请确保您已经安装了 Go 语言环境,并且已经安装了以下数据库和相应的驱动:

- MySQL

- PostgreSQL

- SQLite

- MongoDB(如果需要)

以下是各个数据库的驱动安装命令:

bash

MySQL


go get -u github.com/go-sql-driver/mysql

PostgreSQL


go get -u github.com/lib/pq

SQLite


go get -u github.com/mattn/go-sqlite3

MongoDB


go get -u go.mongodb.org/mongo-driver/mongo


连接数据库

在 Go 语言中,首先需要连接到数据库。以下是一个连接 MySQL 数据库的示例:

go

package main

import (


"database/sql"


_ "github.com/go-sql-driver/mysql"


"fmt"


)

func main() {


// 连接字符串格式:用户名:密码@tcp(主机:端口)/数据库名?charset=utf8mb4


db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname?charset=utf8mb4")


if err != nil {


panic(err)


}


defer db.Close()

// 检查连接是否成功


err = db.Ping()


if err != nil {


panic(err)


}

fmt.Println("Connected to the database!")


}


执行 SQL 查询

查询是数据库操作中最常见的操作之一。以下是一个执行 SQL 查询的示例:

go

package main

import (


"database/sql"


_ "github.com/go-sql-driver/mysql"


"fmt"


)

func main() {


db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname?charset=utf8mb4")


if err != nil {


panic(err)


}


defer db.Close()

rows, err := db.Query("SELECT id, name FROM users")


if err != nil {


panic(err)


}


defer rows.Close()

for rows.Next() {


var id int


var name string


if err := rows.Scan(&id, &name); err != nil {


panic(err)


}


fmt.Printf("ID: %d, Name: %s", id, name)


}

if err := rows.Err(); err != nil {


panic(err)


}


}


执行 SQL 插入、更新和删除操作

除了查询操作,我们还需要执行插入、更新和删除操作。以下是一个执行这些操作的示例:

go

package main

import (


"database/sql"


_ "github.com/go-sql-driver/mysql"


"fmt"


)

func main() {


db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname?charset=utf8mb4")


if err != nil {


panic(err)


}


defer db.Close()

// 插入操作


_, err = db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Alice", 30)


if err != nil {


panic(err)


}

// 更新操作


_, err = db.Exec("UPDATE users SET age = ? WHERE name = ?", 31, "Alice")


if err != nil {


panic(err)


}

// 删除操作


_, err = db.Exec("DELETE FROM users WHERE name = ?", "Alice")


if err != nil {


panic(err)


}

fmt.Println("Operation completed successfully!")


}


使用 ORM 框架

虽然使用 SQL 语句直接操作数据库是一种常见的方法,但使用 ORM(对象关系映射)框架可以简化数据库操作。在 Go 语言中,一些流行的 ORM 框架包括 GORM、XORM 和 Goo 等。

以下是一个使用 GORM 执行数据库操作的示例:

go

package main

import (


"gorm.io/driver/mysql"


"gorm.io/gorm"


"log"


)

type User struct {


gorm.Model


Name string


Age int


}

func main() {


dsn := "username:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"


db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})


if err != nil {


log.Fatal("failed to connect database")


}

// 自动迁移


db.AutoMigrate(&User{})

// 插入操作


user := User{Name: "Alice", Age: 30}


db.Create(&user)

// 更新操作


db.Model(&user).Update("Age", 31)

// 删除操作


db.Delete(&user)


}


总结

本文介绍了 Go 语言中数据库操作的基本方法,包括连接数据库、执行查询、插入、更新和删除操作。通过使用 SQL 语句和 ORM 框架,我们可以轻松地与数据库进行交互。在实际开发中,选择合适的方法取决于具体需求和项目规模。

希望本文能帮助您更好地理解 Go 语言中的数据库操作。如果您有任何疑问或建议,请随时提出。