MST

星途 面试题库

面试题:Go中如何使用database/sql包实现对MySQL数据库的简单查询

假设你有一个MySQL数据库,其中有一张表`users`,包含字段`id`(int)、`name`(varchar)和`age`(int)。请使用Go的database/sql包编写代码,实现从该表中查询所有用户信息并打印出来。需要包含数据库连接的建立与关闭,以及对可能出现的错误进行处理。
40.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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)/your_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, name, age 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())
    }
}
  1. 引入必要的包,包括database/sql用于数据库操作,fmt用于格式化输出,以及MySQL驱动(这里使用github.com/go-sql-driver/mysql,注意需要提前安装)。
  2. 使用sql.Open建立数据库连接,需要传入数据库驱动名和数据源名称(格式为user:password@tcp(127.0.0.1:3306)/your_database_name,需替换为真实的用户名、密码和数据库名)。
  3. 使用db.Ping测试数据库连接是否成功。
  4. 使用db.Query执行SQL查询语句,获取结果集rows
  5. 使用rows.Next遍历结果集,通过rows.Scan将每行数据扫描到对应的变量中。
  6. 最后,检查遍历过程中是否出现错误。