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

时间:2013-07-20 15:26:07

标签: go

我正在尝试了解如何将database/sql包与go-sql-driver一起使用。我写了下面这个简单的程序并且它有效,但我无法弄清楚如何打印多个字段。

数据库wiki1有三个字段idtitlebody。我查询“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)
    }
}

1 个答案:

答案 0 :(得分:2)

要阅读bodytitle而不是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查询的更多详细信息,请阅读此related question