如何打印查询产生的多个字段?

我正在尝试学习如何使用database/sql带有go-sql-driver的包。我编写了以下简单程序并且它可以工作,但是我无法弄清楚如何打印多个字段。


该数据库wiki1具有三个字段id,title和body。我查询“title1”,它是值之一,但我想打印“title”和“body”的值。我这个怎么办


package main


import (

    "database/sql"

    "fmt"

    _ "github.com/go-sql-driver/mysql"

)


func main() {



    db, err := sql.Open("mysql", "root:Password1@/wiki1")

    if err != nil {

        fmt.Println(err)

        return

    }

    defer db.Close()


    st, err := db.Prepare("SELECT title FROM page WHERE title=?")

    if err != nil {

        fmt.Println(err)

    }

    rows, err := st.Query("title1")

    if err != nil {

        fmt.Println(err)

    }


    for rows.Next() {

        var title, body string

        if err := rows.Scan(&title); err != nil {

            fmt.Println(err)

        }


        fmt.Printf("%s\n", title)

    }

    if err := rows.Err(); err != nil {

        fmt.Println(err)

    }

}


肥皂起泡泡
浏览 202回答 1
1回答

浮云间

要阅读body和title而不仅仅是title,请首先更改语句。改变st, err := db.Prepare("SELECT title FROM page WHERE title=?")至st, err := db.Prepare("SELECT body, title FROM page WHERE title=?")然后改变读数。改变    var title, body string    if err := rows.Scan(&title); err != nil {        fmt.Println(err)    }至    var title, body string    if err := rows.Scan(&body, &title); err != nil {        fmt.Println(err)    }这将读取两列。要打印字段,您可以执行fmt.Printf("title: %s\nbody: %s\n", title, body)您将找到有关使用 database/sql 进行查询的更多详细信息,请阅读此相关问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go