c语言编程笔录

首页 >   > 笔记大全

笔记大全

golang mysql查询

更新时间:2023-12-02

golang mysql查询

在golang中,可以使用database/sql和对应的驱动程序包(例如mysql)来连接和查询MySQL数据库。下面是使用golang向MySQL数据库查询数据的示例代码:

连接到MySQL数据库

            package main

            import (
                "database/sql"
                "fmt"
                _ "github.com/go-sql-driver/mysql"
            )

            func main() {
                db, err :=sql.Open("mysql", "user:password@tcp(host:port)/database")
                if err !=nil {
                    panic(err.Error())
                }
                defer db.Close()
            }
        

上述代码中使用了database/sql和"github.com/go-sql-driver/mysql"包来连接MySQL数据库。db变量是一个sql.DB类型的对象,表示与数据库的连接。如果连接成功,则可以使用该对象执行查询。

查询MySQL数据库中的数据

            package main

            import (
                "database/sql"
                "fmt"
                _ "github.com/go-sql-driver/mysql"
            )

            func main() {
                db, err :=sql.Open("mysql", "user:password@tcp(host:port)/database")
                if err !=nil {
                    panic(err.Error())
                }
                defer db.Close()

                rows, err :=db.Query("SELECT * FROM table")
                if err !=nil {
                    panic(err.Error())
                }
                defer rows.Close()

                for rows.Next() {
                    var id int
                    var name string
                    err=rows.Scan(&id, &name)
                    if err !=nil {
                        panic(err.Error())
                    }
                    fmt.Println(id, name)
                }
            }
        

上述代码中,使用了db.Query函数来执行查询,并将查询结果存储在rows变量中。查询语句"SELECT * FROM table"表示选择该表中的所有列。使用rows.Next函数遍历查询结果,并使用rows.Scan函数将每一行的值存储到id和name变量中,最后将id和name打印到控制台上。

带参数的MySQL查询

            package main

            import (
                "database/sql"
                "fmt"
                _ "github.com/go-sql-driver/mysql"
            )

            func main() {
                db, err :=sql.Open("mysql", "user:password@tcp(host:port)/database")
                if err !=nil {
                    panic(err.Error())
                }
                defer db.Close()

                stmt, err :=db.Prepare("SELECT * FROM table WHERE id=?")
                if err !=nil {
                    panic(err.Error())
                }
                defer stmt.Close()

                rows, err :=stmt.Query(1)
                if err !=nil {
                    panic(err.Error())
                }
                defer rows.Close()

                for rows.Next() {
                    var id int
                    var name string
                    err=rows.Scan(&id, &name)
                    if err !=nil {
                        panic(err.Error())
                    }
                    fmt.Println(id, name)
                }
            }
        

上述代码中使用了db.Prepare函数准备查询语句。在查询语句中,使用问号表示参数,这里只有一个,表示id。然后使用stmt.Query函数执行查询,并将id参数传递给该函数。最后和前面的示例一样,遍历查询结果,将值存储到变量中,并将这些值打印到控制台上。

总结

在golang中,可以使用database/sql和对应的驱动程序包(例如mysql)来连接和查询MySQL数据库。连接MySQL数据库的代码示例可以使用sql.Open函数,执行查询可以使用db.Query或stmt.Query等函数。与其他语言相比,golang的mysql查询更加简洁,易于使用。