首页 > 代码库 > go-sql-driver包 实现mysql不定字段查询
go-sql-driver包 实现mysql不定字段查询
go-sql-driver包是一个第三方包 下载地址http://github.com/go-sql-driver/mysql 下面直接上代码
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { //连接数据库 db, err := sql.Open("mysql", "root:@tcp(localhost:3306)/go?charset=utf8") if err != nil { fmt.Println("连接数据库失败", err.Error()) return } defer db.Close() //查询数据库 query, err := db.Query("select * from go_user") if err != nil { fmt.Println("查询数据库失败", err.Error()) return } defer query.Close() //读出查询出的列字段名 cols, _ := query.Columns() //values是每个列的值,这里获取到byte里 values := make([][]byte, len(cols)) //query.Scan的参数,因为每次查询出来的列是不定长的,用len(cols)定住当次查询的长度 scans := make([]interface{}, len(cols)) //让每一行数据都填充到[][]byte里面 for i := range values { scans[i] = &values[i] } //最后得到的map results := make(map[int]map[string]string) i := 0 for query.Next() { //循环,让游标往下推 if err := query.Scan(scans...); err != nil { //query.Scan查询出来的不定长值放到scans[i] = &values[i],也就是每行都放在values里 fmt.Println(err) return } row := make(map[string]string) //每行数据 for k, v := range values { //每行数据是放在values里面,现在把它挪到row里 key := cols[k] row[key] = string(v) } results[i] = row //装入结果集中 i++ } //查询出来的数组 for k, v := range results { fmt.Println(k, v) } db.Close() //用完关闭 }
注:原创者是 http://www.du52.com/text.php?id=562 我做了注释,这样容易看懂点
go-sql-driver包 实现mysql不定字段查询
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。