我正在尝试学习如何将database/sql软件包与go-sql-driver一起使用。我编写了以下简单程序,它可以工作,但是我无法弄清楚如何打印多个字段。
database/sql
该数据库wiki1具有三个字段id,title和body。我查询“ title1”,这是值之一,但我想打印“ title”和“ body”的值。我该怎么办?
wiki1
id
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) } }
要读取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)