zoukankan      html  css  js  c++  java
  • 表字段对应值输出

    package main
    
    import (
    	"database/sql"
    	"fmt"
    	"log"
    
    	_ "github.com/go-sql-driver/mysql"
    )
    
    //先把字段的值都当成字符串
    func Rows2SliceMap(rows *sql.Rows) (list []map[string]string) {
    	//字段名称
    	columns, _ := rows.Columns()
    	//多少个字段
    	length := len(columns)
    	//每一行字段的值
    	values := make([]sql.RawBytes, length)
    	//保存的是values的内存地址
    	pointer := make([]interface{}, length)
    	//
    	for i := 0; i < length; i++ {
    		pointer[i] = &values[i]
    	}
    	//
    	for rows.Next() {
    		//把参数展开,把每一行的值存到指定的内存地址去,循环覆盖,values也就跟着被赋值了
    		rows.Scan(pointer...)
    		//每一行
    		row := make(map[string]string)
    		for i := 0; i < length; i++ {
    			fmt.Println(values[i])
    			row[columns[i]] = string(values[i])
    		}
    		list = append(list, row)
    	}
    	//
    	return
    }
    func main() {
    	db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/wuren_admin?charset=utf8")
    	if err != nil {
    		log.Println(err.Error())
    	}
    	err = db.Ping()
    	if err != nil {
    		log.Println(err.Error())
    	}
    	rows, _ := db.Query("select * from admin")
    	defer rows.Close()
    	list := Rows2SliceMap(rows)
    	for k, v := range list {
    		fmt.Println(k)
    		fmt.Println(v["id"], v["name"], v["telephone"])
    	}
    }
    
    
  • 相关阅读:
    Java泛型 E、T、K、V、N
    二维码生成,二维码中嵌套图片,文字生成图片
    线程之线程安全解决
    多线程的卖票示例来理解两种创建线程方法的区别
    多线程
    Object类
    Runtime
    9.Lambda表达式入门
    匿名内部类
    局部内部类
  • 原文地址:https://www.cnblogs.com/ryanlamp/p/10031077.html
Copyright © 2011-2022 走看看