var ( id int name string ) rows, err := db.Query("select id, name from users where id = ?", 1) if err != nil { log.Fatal(err) } defer rows.Close()
遍历 rows, 读取数据,并填充struct
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
var users []User for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name) if err != nil { log.Fatal(err) } users = append(users, user) } err = rows.Err() if err != nil { log.Fatal(err) }
person, err := Row[person](context.Background(), db, "SELECT * FROM persons order by id limit 1") assert.NoError(t, err) assert.Equal(t, 1, person.ID) assert.Equal(t, "brett", person.Name)
name, err := Row[string](context.Background(), db, "SELECT name FROM persons order by id limit 1") assert.NoError(t, err) assert.Equal(t, "brett", name) }
funcTestRowsMap(t *testing.T) { db := exampleDB(t)
persons, err := RowsMap(context.Background(), db, "SELECT * FROM persons order by id") assert.NoError(t, err) require.Equal(t, 2, len(persons)) assert.Equal(t, int64(1), persons[0]["id"]) assert.Equal(t, "brett", persons[0]["name"]) assert.Equal(t, int64(2), persons[1]["id"]) assert.Equal(t, "fred", persons[1]["name"])
names, err := RowsMap(context.Background(), db, "SELECT name FROM persons order by id") assert.NoError(t, err) assert.Equal(t, 2, len(names)) assert.Equal(t, "brett", names[0]["name"]) assert.Equal(t, "fred", names[1]["name"]) }
funcTestRowMap(t *testing.T) { db := exampleDB(t)
person, err := RowMap(context.Background(), db, "SELECT * FROM persons order by id limit 1") assert.NoError(t, err) assert.Equal(t, int64(1), person["id"]) assert.Equal(t, "brett", person["name"])
name, err := Row[string](context.Background(), db, "SELECT name FROM persons order by id limit 1") assert.NoError(t, err) assert.Equal(t, "brett", name) }