我正在尝试了解如何将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)
}
}
答案 0 :(得分:2)
要阅读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查询的更多详细信息,请阅读此related question。