如何设置Go语言中的Mysql查询限制或查询?

huangapple go评论115阅读模式
英文:

How to set Limit or query Go Language Mysql?

问题

如何在Go语言中设置mysql的限制?我在php中尝试过,它可以工作,但在Go语言中,它显示<nil>值,不知道如何修复。

php代码示例:

  1. $sql = "SELECT My_Data FROM page_data";
  2. // 或者
  3. $sql = "SELECT My_Data FROM page_data limit 0,10";

Go代码示例:

  1. myquery, err := db.Prepare("SELECT pages_old FROM app_library")
  2. fmt.Println("Data---", myquery)

当我运行以下命令时:

  1. q := "SELECT `data` FROM `page_data`"
  2. rows, err := db.Query(q)
  3. if err != nil {
  4. fmt.Println(err)
  5. }
  6. defer rows.Close()
  7. for rows.Next() {
  8. var data string // 与数据库中的类型相同
  9. if err := rows.Scan(&data); err != nil {
  10. log.Fatal(err)
  11. }
  12. fmt.Println(data)
  13. }

然后出现以下错误:

  1. Error: error:-- commands out of sync. Did you run multiple statements at once?
  2. panic: runtime error: invalid memory address or nil pointer dereference
  3. panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x10bee7a]
英文:

How to Set mysql limit in Go Language? I try it to php it is working but in the Go language, it show <nil> value didn't know how to fixed

  1. php:--- $sql = "SELECT My_Data FROM page_data"; or $sql = "SELECT My_Data FROM page_data limit 0,10";
  2. Go :- SHOW <nil> >>>
  3. myquery, err := db.Prepare("SELECT pages_old FROM app_library")
  4. fmt.Println("Data---", myquery)

When I hit the below command :-
q := "SELECT data FROM page_data"

  1. rows, err := db.Query(q)
  2. if err != nil {
  3. fmt.Println(err)
  4. }
  5. defer rows.Close()
  6. for rows.Next() {
  7. var data string // same database type
  8. if err := rows.Scan(&data); err != nil {
  9. log.Fatal(err)
  10. }
  11. fmt.Println(data)
  12. }

Then Got the below error:

> Error: error :-- commands out of sync. Did you run multiple statements
> at once? panic: runtime error: invalid memory address or nil pointer
> dereference panic: runtime error: invalid memory address or nil
> pointer dereference [signal SIGSEGV: segmentation violation code=0x1
> addr=0x0 pc=0x10bee7a]

答案1

得分: 1

[Prepare][1] 用于创建一个预处理语句,以供以后查询或执行使用。

如果你想执行一个返回行的查询,请使用 [Query][2]。

完整示例:

  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. _ "github.com/go-sql-driver/mysql"
  7. )
  8. const (
  9. dbUser = ""
  10. dbPassword = ""
  11. dbName = ""
  12. )
  13. func main() {
  14. db, err := sql.Open("mysql", dbUser+":"+dbPassword+"@/"+dbName+"?charset=utf8")
  15. if err != nil {
  16. log.Fatal(err)
  17. }
  18. q := "SELECT `data` FROM `page_data`"
  19. rows, err := db.Query(q)
  20. if err != nil {
  21. fmt.Println(err)
  22. }
  23. defer rows.Close()
  24. for rows.Next() {
  25. var data string // 相同的数据库类型
  26. if err := rows.Scan(&data); err != nil {
  27. log.Fatal(err)
  28. }
  29. fmt.Println(data)
  30. }
  31. }

示例已经被编辑过了。
[1]: https://golang.org/pkg/database/sql/#DB.Prepare
[2]: https://golang.org/pkg/database/sql/#DB.Query

英文:

[Prepare][1] used to creates a prepared statement for later queries or executions.

if you want to executes a query that returns rows use [Query][2]

Full Example:

  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. _ "github.com/go-sql-driver/mysql"
  7. )
  8. const (
  9. dbUser = ""
  10. dbPassword = ""
  11. dbName = ""
  12. )
  13. func main() {
  14. db, err := sql.Open("mysql", dbUser+":"+dbPassword+"@/"+dbName+"?charset=utf8")
  15. if err != nil {
  16. log.Fatal(err)
  17. }
  18. q := "SELECT `data` FROM `page_data`"
  19. rows, err := db.Query(q)
  20. if err != nil {
  21. fmt.Println(err)
  22. }
  23. defer rows.Close()
  24. for rows.Next() {
  25. var data string // same database type
  26. if err := rows.Scan(&data); err != nil {
  27. log.Fatal(err)
  28. }
  29. fmt.Println(data)
  30. }
  31. }

example it has been edited
[1]: https://golang.org/pkg/database/sql/#DB.Prepare
[2]: https://golang.org/pkg/database/sql/#DB.Query

huangapple
  • 本文由 发表于 2017年3月18日 02:40:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/42864948.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定