面试题答案
一键面试package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 构建数据源名称
dsn := "root:password@tcp(127.0.0.1:3306)/test"
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err.Error())
}
defer db.Close()
// 测试数据库连接
err = db.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Connected to the database!")
// 执行查询
rows, err := db.Query("SELECT * FROM users")
if err != nil {
panic(err.Error())
}
defer rows.Close()
// 处理查询结果
for rows.Next() {
var id int
var name string
var age int
err = rows.Scan(&id, &name, &age)
if err != nil {
panic(err.Error())
}
fmt.Printf("ID: %d, Name: %s, Age: %d\n", id, name, age)
}
// 检查迭代过程中的错误
err = rows.Err()
if err != nil {
panic(err.Error())
}
}
请注意,上述代码中需要导入 github.com/go-sql-driver/mysql
驱动,在实际运行前请确保已经安装了该驱动(可以通过 go get -u github.com/go-sql-driver/mysql
安装)。并且代码中的表结构假设 users
表有 id
(整型)、name
(字符串)、age
(整型)字段,实际应用中请根据真实表结构调整 Scan
部分。