【源码阅读】 Golang中的database/sql库源码探究
// 导入database/sql相关的包
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql" // 导入MySQL驱动
)
// 初始化数据库连接
func initDB() (*sql.DB, error) {
// 注意:请替换为你的数据库用户名、密码和数据库名
dsn := "username:password@tcp(127.0.0.1:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
return nil, err
}
err = db.Ping()
if err != nil {
return nil, err
}
return db, nil
}
// 查询数据库
func queryDB(db *sql.DB) error {
// 执行一个简单的SQL查询
rows, err := db.Query("SELECT * FROM your_table LIMIT 10")
if err != nil {
return err
}
defer rows.Close()
// 遍历查询结果
for rows.Next() {
// 假设你的表有两列,第一列是int类型,第二列是string类型
var id int
var name string
if err := rows.Scan(&id, &name); err != nil {
return err
}
fmt.Printf("ID: %d, Name: %s\n", id, name)
}
return rows.Err()
}
func main() {
db, err := initDB()
if err != nil {
panic(err)
}
defer db.Close()
err = queryDB(db)
if err != nil {
panic(err)
}
}
这段代码展示了如何使用Go的database/sql
库连接MySQL数据库,执行查询并处理结果。代码中包含了错误处理,确保在遇到问题时程序能够优雅地响应。这是一个很好的学习示例,对于想要了解如何在Go中操作数据库的开发者来说,具有很好的教育价值。
评论已关闭