go怎么向mysql存入结构体切片
时间: 2024-02-18 12:00:59 浏览: 44
要向 MySQL 存入结构体切片,可以使用 Go 语言中的 database/sql 包和第三方库如 go-sql-driver/mysql。
以下是一个简单的示例代码,假设已经定义了一个结构体类型 User:
```go
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
Location string `json:"location"`
}
```
首先,需要创建一个数据库连接:
```go
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database_name")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
}
```
接下来,可以使用 SQL 语句和结构体切片来插入数据:
```go
func main() {
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database_name")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
users := []User{
{1, "Alice", 25, "New York"},
{2, "Bob", 30, "London"},
{3, "Charlie", 35, "Paris"},
}
stmt, err := db.Prepare("INSERT INTO users (id, name, age, location) VALUES (?, ?, ?, ?)")
if err != nil {
fmt.Println(err)
return
}
defer stmt.Close()
for _, u := range users {
_, err := stmt.Exec(u.ID, u.Name, u.Age, u.Location)
if err != nil {
fmt.Println(err)
return
}
}
}
```
这个示例将三个 User 结构体插入到名为 users 的 MySQL 数据库表中。使用 Prepare() 函数准备 SQL 语句,然后使用 Exec() 函数执行插入操作。在循环中遍历结构体切片,将每个元素插入到数据库中。
注意,这只是一个简单的示例。在实际应用中,还需要考虑并发访问、数据类型转换、错误处理等方面。