golang mysql查询
更新时间:2023-12-02golang 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查询更加简洁,易于使用。