MST

星途 面试题库

面试题:Go中如何使用database/sql包进行基本的SQL查询

请编写一段Go代码,使用database/sql包连接到MySQL数据库,并执行一个简单的SELECT查询,例如查询某张用户表中的所有用户信息,展示如何处理连接、查询执行以及结果获取。
11.9万 热度难度
编程语言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)/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())
    }
}

上述代码:

  1. 使用sql.Open打开MySQL数据库连接,需替换userpassword127.0.0.1:3306database_name为真实信息。
  2. 使用db.Ping测试连接。
  3. 使用db.Query执行SELECT查询,假设表usersidusernameemail字段。
  4. 使用rows.Scan将每行数据扫描到对应变量中,并打印结果。
  5. 最后检查迭代结果集过程中是否有错误。

注意:需导入github.com/go-sql-driver/mysql驱动,该驱动遵循database/sql接口规范。