我正在尝试执行一个golang数据库查询,如:
package main
import "fmt"
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
var (
name string
id int
age int
)
func main() {
rows, err := sql.Open("mysql", "dbaccess:dbaccess@/dbaccess")
if err != nil {
panic(err.Error())
}
defer rows.Close()
rows, err = sql.Query("select * from people where id = ?", 1)
if err != nil {
panic(err.Error())
}
defer rows.Close()
for rows.Next() {
err := rows.Scan(&id, &name)
if err != nil {
panic(err.Error())
}
fmt.Println(id, name)
}
err = rows.Err()
if err != nil {
panic(err.Error())
}
}
但我得到了错误:
20: undefined: sql.Query
我试着在=之前加一个冒号,但后来出现了一个错误:
20: no new variables on left side of :=
我错过了什么?我知道代码中还有其他错误,但我只是边调试边学习。
查看文档。Open
返回一个"指向数据库的指针",Query
是一个使用该指针(而不是sql)的方法。所以你需要做这样的事情:
db, err := sql.Open("mysql", "dbaccess:dbaccess@/dbaccess")
if err != nil {
panic(err.Error())
}
defer rows.Close()
rows, err := db.Query("select * from people where id = ?", 1)
if err != nil {
panic(err.Error())
}
defer rows.Close()