package main
import (
"database/sql"
"fmt"
sql数据库、_ "github.com/go-sql-driver/mysql"
)
func main() {
//连接数据库
db, err := sql.Open("mysql", "root:@tcp(localhost:3306)/go?charset=utf8")
MySQL查询语句?if err != nil {
fmt.Println("连接数据库失败", err.Error())
return
}
defer db.Close()
grab driver,//查询数据库
query, err := db.Query("select * from go_user")
if err != nil {
fmt.Println("查询数据库失败", err.Error())
return
mysql运行sql文件。}
defer query.Close()
//读出查询出的列字段名
cols, _ := query.Columns()
//values是每个列的值,这里获取到byte里
Mysql查询、values := make([][]byte, len(cols))
//query.Scan的参数,因为每次查询出来的列是不定长的,用len(cols)定住当次查询的长度
scans := make([]interface{}, len(cols))
//让每一行数据都填充到[][]byte里面
for i := range values {
mysql和sql?scans[i] = &values[i]
}
//最后得到的map
results := make(map[int]map[string]string)
i := 0
sql where in,for query.Next() { //循环,让游标往下推
if err := query.Scan(scans...); err != nil { //query.Scan查询出来的不定长值放到scans[i] = &values[i],也就是每行都放在values里
fmt.Println(err)
return
}
mysql workbench、row := make(map[string]string) //每行数据
for k, v := range values { //每行数据是放在values里面,现在把它挪到row里
key := cols[k]
row[key] = string(v)
}
mysql导出sql文件?results[i] = row //装入结果集中
i++
}
//查询出来的数组
for k, v := range results {
sql group by order by一起用,fmt.Println(k, v)
}
db.Close() //用完关闭
}
注:原创者是 http://www.du52.com/text.php?id=562 我做了注释,这样容易看懂点
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态