发布时间:2024-12-23 00:41:32
首先,我们需要使用以下命令来安装该库:
go get -u github.com/go-sql-driver/mysql
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(host:port)/database")
if err != nil {
fmt.Println(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
fmt.Println(err)
}
}
这段代码首先通过"sql.Open"方法连接到MySQL数据库。你需要将其中的"username"、"password"、"host"、"port"和"database"换成你自己MySQL数据库的配置信息。注意,这里我们使用了匿名导入"_ github.com/go-sql-driver/mysql",这样就不需要显式地调用该库。
func queryData(db *sql.DB) ([][]interface{}, error) {
rows, err := db.Query("SELECT * FROM table")
if err != nil {
return nil, err
}
defer rows.Close()
columns, err := rows.Columns()
if err != nil {
return nil, err
}
count := len(columns)
values := make([]interface{}, count)
ptrs := make([]interface{}, count)
for i := range values {
ptrs[i] = &values[i]
}
var result [][]interface{}
for rows.Next() {
err = rows.Scan(ptrs...)
if err != nil {
return nil, err
}
row := make([]interface{}, count)
for i, value := range values {
row[i] = value
}
result = append(result, row)
}
return result, nil
}
在这段代码中,我们首先执行了一条简单的SELECT语句,将结果保存在"rows"变量中。然后,我们通过"columns"变量获取到查询结果的列名。接着,我们使用两个切片"values"和"ptrs"分别用于保存每行的值和指针。
在循环遍历结果集时,我们通过"rows.Scan"方法将每行的值赋给"values"切片,然后构造一个新的切片"row"来保存该行的数据。最后,我们将每一行的数据添加到"result"二维数组中。
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(host:port)/database")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
err = db.Ping()
if err != nil {
fmt.Println(err)
return
}
data, err := queryData(db)
if err != nil {
fmt.Println(err)
return
}
for _, row := range data {
fmt.Println(row)
}
}
func queryData(db *sql.DB) ([][]interface{}, error) {
rows, err := db.Query("SELECT * FROM table")
if err != nil {
return nil, err
}
defer rows.Close()
columns, err := rows.Columns()
if err != nil {
return nil, err
}
count := len(columns)
values := make([]interface{}, count)
ptrs := make([]interface{}, count)
for i := range values {
ptrs[i] = &values[i]
}
var result [][]interface{}
for rows.Next() {
err = rows.Scan(ptrs...)
if err != nil {
return nil, err
}
row := make([]interface{}, count)
for i, value := range values {
row[i] = value
}
result = append(result, row)
}
return result, nil
}
以上就是如何使用Golang查询MySQL并返回一个二维数组的方法。通过安装依赖、连接数据库和执行查询操作,我们可以轻松地在Golang中实现与MySQL的交互。希望本文能对你有所帮助!