面试题答案
一键面试package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 数据库连接信息
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database_name")
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 id, username, email FROM users")
if err != nil {
panic(err.Error())
}
defer rows.Close()
// 处理查询结果
var (
id int
username string
email string
)
for rows.Next() {
err = rows.Scan(&id, &username, &email)
if err != nil {
panic(err.Error())
}
fmt.Printf("ID: %d, Username: %s, Email: %s\n", id, username, email)
}
// 检查是否有错误发生在迭代结果集过程中
err = rows.Err()
if err != nil {
panic(err.Error())
}
}
上述代码:
- 使用
sql.Open
打开MySQL数据库连接,需替换user
、password
、127.0.0.1:3306
、database_name
为真实信息。 - 使用
db.Ping
测试连接。 - 使用
db.Query
执行SELECT查询,假设表users
有id
、username
、email
字段。 - 使用
rows.Scan
将每行数据扫描到对应变量中,并打印结果。 - 最后检查迭代结果集过程中是否有错误。
注意:需导入github.com/go-sql-driver/mysql
驱动,该驱动遵循database/sql
接口规范。