GO语言连接数据库代码,如何编写高效稳定的数据库连接操作?
- 前端开发
- 2026-01-14
- 6
在GO语言中连接数据库是一个常见的操作,通常使用database/sql包和相应的数据库驱动来实现,以下是一个详细的示例,展示如何使用GO语言连接MySQL数据库,并执行一些基本的查询操作。
连接MySQL数据库的GO语言代码示例
确保你已经安装了MySQL数据库和相应的GO数据库驱动,对于MySQL,你可以使用gosqldriver/mysql。
package main import ( "database/sql" "fmt" "log" _ "github.com/gosqldriver/mysql" ) func main() { // 数据库连接字符串 dsn := "username:password@tcp(localhost:3306)/dbname" // 连接数据库 db, err := sql.Open("mysql", dsn) if err != nil { log.Fatal(err) } defer db.Close() // 验证连接 err = db.Ping() if err != nil { log.Fatal(err) } // 执行查询 rows, err := db.Query("SELECT id, name, age FROM users") if err != nil { log.Fatal(err) } defer rows.Close() // 遍历结果集 for rows.Next() { var id int var name string var age int if err := rows.Scan(&id, &name, &age); err != nil { log.Fatal(err) } fmt.Printf("ID: %d, Name: %s, Age: %dn", id, name, age) } // 检查错误 if err := rows.Err(); err != nil { log.Fatal(err) } }
代码解析
-
导入包:首先导入必要的包,包括database/sql用于数据库操作和log用于错误处理。

-
数据库连接字符串:dsn(数据源名称)包含了数据库的用户名、密码、地址和数据库名称。
-
打开数据库连接:使用sql.Open函数打开数据库连接。
-
验证连接:使用db.Ping函数验证连接是否成功。

-
执行查询:使用db.Query执行SQL查询。
-
遍历结果集:使用rows.Next和rows.Scan遍历查询结果。

-
关闭资源:确保在不再需要时关闭数据库连接和查询结果集。
- 《Go语言编程》 邱锡鹏 著,电子工业出版社
- 《Go语言实战》 贾方兴 著,人民邮电出版社
表格示例
以下是一个简单的表格,展示了如何使用上述代码执行插入和更新操作:
| 操作 | SQL语句 | GO代码示例 |
|---|---|---|
| 插入 | INSERT INTO users (name, age) VALUES ('Alice', 30) | _, err := db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Alice", 30) |
| 更新 | UPDATE users SET age = ? WHERE name = ? | _, err := db.Exec("UPDATE users SET age = ? WHERE name = ?", 31, "Alice") |
FAQs
Q1:如何处理数据库连接池?
A1:在GO中,sql.Open函数会创建一个数据库连接池,你可以通过SetMaxOpenConns和SetMaxIdleConns方法来配置连接池的最大打开连接数和最大空闲连接数。
Q2:如何处理SQL载入攻破?
A2:使用参数化查询来避免SQL载入攻破,在上面的示例中,我们使用了db.Exec和rows.Scan方法,这些方法会自动处理参数化查询,从而防止SQL载入。
国内文献权威来源
是使用GO语言连接数据库的基本教程和示例,在实际应用中,还需要根据具体需求调整数据库连接配置和查询操作。