我正在尝试使用地图和这些地图的切片来存储从数据库查询返回的行。但是我在 rows.Next() 和 final 的每次迭代中得到的是查询中同一行的切片。似乎问题与我存储的内存位置相同cols,但直到现在我才能解决它。
我在这里错过了什么:
源代码如下:
package main
import (
"database/sql"
_ "github.com/lib/pq"
"fmt"
"log"
"reflect"
)
var myMap = make(map[string]interface{})
var mySlice = make([]map[string]interface{}, 0)
func main(){
fmt.Println("this is my go playground.")
// DB Connection-
db, err := sql.Open("postgres", "user=postgres dbname=proj2-dbcruddb-dev password=12345 sslmode=disable")
if err != nil {
log.Fatalln(err)
}
rows, err := db.Query("SELECT id, username, password FROM userstable")
defer rows.Close()
if err != nil {
log.Fatal(err)
}
colNames, err := rows.Columns()
if err != nil {
log.Fatal(err)
}
cols := make([]interface{}, len(colNames))
colPtrs := make([]interface{}, len(colNames))
for i := 0; i < len(colNames); i++ {
colPtrs[i] = &cols[i]
}
for rows.Next() {
err = rows.Scan(colPtrs...)
if err != nil {
log.Fatal(err)
}
fmt.Println("cols: ", cols)
for i, col := range cols {
myMap[colNames[i]] = col
}
mySlice = append(mySlice, myMap)
// Do something with the map
for key, val := range myMap {
fmt.Println("Key:", key, "Value:", val, "Value Type:", reflect.TypeOf(val))
}
fmt.Println("myMap: ", myMap)
fmt.Println("mySlice: ", mySlice)
}
fmt.Println(mySlice)
}
陪伴而非守候
百度地图中获得的坐标存入数据库
Android客户端从服务器数据库读取图片
百度地图开始进入是正常,切换到卫星地图也正常,但是再切换回普通地图就白板
数据库中保存图片
相关分类