连接到数据库后,我们可以执行各种操作,如插入、更新、删除和查询。在本节中,我们将介绍如何执行查询操作。
要执行查询,我们需要创建一个SQL语句,并将其传递给数据库连接的Query或QueryRow方法。Query方法用于执行返回多行结果的查询操作,而QueryRow方法用于执行返回单行结果的查询操作。
以下是一个执行查询的示例代码:
```go
rows, err := db.Query("SELECT * FROM users")
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)
}
```
在上面的代码中,我们查询了名为"users"的表,并遍历了每一行结果。对于每一行,我们使用Scan方法将数据库中的列与变量进行匹配,并打印输出结果。
执行插入、更新和删除操作
除了查询操作外,我们还可以执行插入、更新和删除操作。
要执行插入操作,我们需要创建一个SQL语句,并使用Exec方法来执行它。以下是一个执行插入操作的示例代码:
```go
result, err := db.Exec("INSERT INTO users (name) VALUES (?)", "John Doe")
if err != nil {
panic(err.Error())
}
affectedRows, _ := result.RowsAffected()
fmt.Println("插入操作影响的行数:", affectedRows)
```
在上面的代码中,我们插入了一个名为"John Doe"的用户到"users"表中,并打印出受影响的行数。
执行更新和删除操作的方法与插入操作类似。我们需要创建一个SQL语句,并使用Exec方法来执行它。以下是一个执行更新和删除操作的示例代码:
```go
result, err := db.Exec("UPDATE users SET name = ? WHERE id = ?", "Jane Doe", 1)
if err != nil {
panic(err.Error())
}
affectedRows, _ := result.RowsAffected()
fmt.Println("更新操作影响的行数:", affectedRows)
```
在上面的代码中,我们将ID为1的用户的名称更新为"Jane Doe",并打印出受影响的行数。