golang 的数据库操作感觉不怎么好,哎, PHP 直接 mysql_query mysql_fetch_array()简单粗暴多好

2017-03-02 18:34:02 +08:00
 buseni
用的这个 github.com/go-sql-driver/mysql 我用 select * from tablename,查询出来, Scan 函数呢,还需要自己定义所查询的变量,然后存储结果集,另外一种方法,还需要自己定义中转


//循环输出结果集
//for rows.Next() {
// var id int
// var username string
// err = rows.Scan(&id, &username) //Scan 此函数真的很不爽
// checkErr(err)
// fmt.Println(id)
// fmt.Println(username)
//
//}

//字典类型
//构造 scanArgs 、 values 两个数组, scanArgs 的每个值指向 values 相应值的地址
columns, _ := rows.Columns()
scanArgs := make([]interface{}, len(columns))
values := make([]interface{}, len(columns))
for i := range values {
scanArgs[i] = &values[i]
}

for rows.Next() {
//将行数据保存到 record 字典
err = rows.Scan(scanArgs...)
record := make(map[string]string)
for i, col := range values {
if col != nil {
record[columns[i]] = string(col.([]byte))
}
}
fmt.Println(record)
}
3748 次点击
所在节点    问与答
21 条回复
Muninn
2017-03-03 09:23:43 +08:00
@l1093178 好吧,我看大家讨论 json 库为何必须要定好 struct 才能解析的时候,甩锅给静态语言。。。用反射的话, golang 的反射又死慢。 貌似 1.9 想改善呀。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/344410

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX