100-go-mistakes/10-standard-lib/78-sql/rows-iterations-errors/main.go
2021-12-27 15:56:17 +01:00

68 lines
1.1 KiB
Go

package main
import (
"context"
"database/sql"
"log"
)
func (c *conn) get1(ctx context.Context, id string) (string, int, error) {
rows, err := c.db.QueryContext(ctx,
"SELECT DEP, AGE FROM EMP WHERE ID = ?", id)
if err != nil {
return "", 0, err
}
defer func() {
err := rows.Close()
if err != nil {
log.Printf("failed to close rows: %v\n", err)
}
}()
var (
department string
age int
)
for rows.Next() {
err := rows.Scan(&department, &age)
if err != nil {
return "", 0, err
}
}
return department, age, nil
}
func (c *conn) get2(ctx context.Context, id string) (string, int, error) {
rows, err := c.db.QueryContext(ctx,
"SELECT DEP, AGE FROM EMP WHERE ID = ?", id)
if err != nil {
return "", 0, err
}
defer func() {
err := rows.Close()
if err != nil {
log.Printf("failed to close rows: %v\n", err)
}
}()
var (
department string
age int
)
for rows.Next() {
err := rows.Scan(&department, &age)
if err != nil {
return "", 0, err
}
}
if err := rows.Err(); err != nil {
return "", 0, err
}
return department, age, nil
}
type conn struct {
db *sql.DB
}