商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Golang如何在Linux中进行数据库操作

Golang如何在Linux中进行数据库操作

  发布于2026-07-10 阅读(0)

扫一扫,手机访问

在日常的Go开发中,数据库操作是家常便饭。特别是在Linux环境下,一套流畅的数据库操作流程能大幅提升开发效率。今天咱们就来盘一盘,在Golang里如何通过第三方库搞定数据库操作,从驱动安装到增删改查,一步步走通。

Golang如何在Linux中进行数据库操作

先搞定驱动安装。不同的数据库需要对应的Go驱动,比如操作MySQL就用go-sql-driver/mysql。安装命令很简单,一行搞定:

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

驱动装好之后,在代码里导入包。需要留意的是,这里用了一个下划线_来占位导入驱动包——这么做的原因是让驱动在init()函数中完成自我注册,同时避免Go编译器报“未使用”的错误。标准写法如下:

import ("database/sql"_ "github.com/go-sql-driver/mysql")

接下来就是核心的数据库连接环节。使用sql.Open()函数,传入驱动名称和数据源名称(DSN)。以MySQL为例,DSN的格式是username:password@tcp(host:port)/dbname

func main() {db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")if err != nil {log.Fatal(err)}defer db.Close()// 进行数据库操作...}

连接建立之后,就可以动手执行SQL了。插入数据时,一般先用db.Prepare()预编译语句,再用stmt.Exec()执行。这样做既能防止SQL注入,执行效率也更高:

func insertData(db *sql.DB) {query := "INSERT INTO users (name, age) VALUES (?, ?)"stmt, err := db.Prepare(query)if err != nil {log.Fatal(err)}defer stmt.Close()result, err := stmt.Exec("John Doe", 30)if err != nil {log.Fatal(err)}lastInsertId, err := result.LastInsertId()if err != nil {log.Fatal(err)}fmt.Println("Inserted row with ID:", lastInsertId)}

查询操作则使用db.Query(),返回的Rows对象需要遍历读取。以查询所有用户为例:

func getAllUsers(db *sql.DB) {query := "SELECT id, name, age FROM users"rows, err := db.Query(query)if err != nil {log.Fatal(err)}defer rows.Close()for rows.Next() {var id intvar name stringvar age interr := rows.Scan(&id, &name, &age)if err != nil {log.Fatal(err)}fmt.Printf("User: %d, %s, %d\n", id, name, age)}err = rows.Err()if err != nil {log.Fatal(err)}}

最后别忘了关闭数据库连接。defer db.Close()通常放在连接成功后立即执行,这是一个好习惯,确保函数退出时连接被安全释放。

以上就是在Golang中通过Linux环境操作数据库的标准流程。根据你实际使用的数据库类型(PostgreSQL、SQLite等),更换对应的驱动和DSN格式即可,整体套路万变不离其宗。

本文转载于:https://www.yisu.com/ask/96001709.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注