| | |
| | | return nil |
| | | } |
| | | |
| | | rows, err := db.Raw(`select * from users`).Rows() |
| | | rows, err := db.Raw(sql).Rows() |
| | | if err != nil { |
| | | result = append(result, err.Error()) |
| | | return err |
| | | } |
| | | |
| | | var colums []string |
| | | var cols []string |
| | | for rows.Next() { |
| | | //先获取所有的column |
| | | if colums == nil { |
| | | colums, _ = rows.Columns() |
| | | if cols == nil { |
| | | cols, _ = rows.Columns() |
| | | } |
| | | |
| | | //建立俩个interface数组,columnPointers中存在columns的地址 |
| | | columns := make([]interface{}, len(colums)) |
| | | columnPointers := make([]interface{}, len(colums)) |
| | | columns := make([]interface{}, len(cols)) |
| | | columnPointers := make([]interface{}, len(cols)) |
| | | for i, _ := range columns { |
| | | //赋值地址 |
| | | columnPointers[i] = &columns[i] |
| | |
| | | //扫描结果 |
| | | rows.Scan(columnPointers...) |
| | | m := make(map[string]interface{}) |
| | | for i, colName := range colums { |
| | | for i, colName := range cols { |
| | | val := columnPointers[i].(*interface{}) |
| | | m[colName] = *val |
| | | } |
| | | |
| | | result = append(result, m) |
| | | //result = append(result, row) |
| | | } |
| | | |
| | | logger.Debug("数据库返回数据%+v", result) |