
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
var (
driverName string = "mysql"
user string = "wukong"
password string = "_"
host string = "192.168.200.49"
port int = 3306
database string = "wukong"
charset string = "utf8"
)
func connect() *sqlx.DB {
dsnString := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s", user, password, host, port, database, charset)
Db, err := sqlx.Open("mysql", dsnString)
if err != nil {
fmt.Printf("mysql connect failed, detail is [%v]", err.Error())
}
return Db
}
func queryData(Db *sqlx.DB, sql string) {
rows, err := Db.Query(sql)
if err != nil {
fmt.Printf("query faied, error:[%v]", err.Error())
return
}
for rows.Next() {
//定义变量接收查询数据
var id,orderAddTime int
var accountId string
err := rows.Scan(&id, &accountId, &orderAddTime)
if err != nil {
fmt.Println("get data failed, error:[%v]", err.Error())
}
fmt.Println(id, accountId, orderAddTime)
}
//关闭结果集(释放连接)
rows.Close()
}
func updateExec(Db *sqlx.DB, sql string) {
// result, err := Db.Exec(sql)
_, err := Db.Exec(sql)
if err != nil {
fmt.Printf("data updateExec faied, error:[%v]", err.Error())
}
fmt.Printf("data updateExec success\n")
// fmt.Println("type:", reflect.TypeOf(result))
}
func main() {
var Db *sqlx.DB = connect()
defer Db.Close()
println("连接成功")
var sql string = "select id,accountId,orderAddTime from om_unshipped_order limit 3"
queryData(Db,sql)
var sqlUpdate string = "update om_unshipped_order set orderAddTime=123456 where id=200246305"
updateExec(Db,sqlUpdate)
println("")
sql = "select id,accountId,orderAddTime from om_unshipped_order where id=200246305"
queryData(Db,sql)
println("end")
}复制
连接成功
200246305 6637 1627398450
200246306 580 1521452249
200246307 580 1528169500
data updateExec success
200246305 6637 123456
end复制
我们应该把 Db 看成一个对象,使用 Db.queryData(sql)
的方式更方面和符合习惯updateExec中 Db.Exec 执行结果 result 对于insert 、update、delete有不同的返回值,比如insert的数据ID,update影响行数等。但是我不知道 updateExec 的返回类型 result 应该是什么,百度寻找答案有的是说使用反射 reflect.TypeOf(result)
,但是我发现打印的类型不能作为返回结果。
【END】
文章转载自小明的编程笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2851次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
831次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
480次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
423次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
371次阅读
2025-04-15 14:48:05
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
273次阅读
2025-04-15 15:27:53
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
268次阅读
2025-04-30 17:37:37
SQL优化 - explain查看SQL执行计划(下)
金同学
254次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
232次阅读
2025-04-30 12:17:54
MySQL 8.4 新特性深度解析:功能增强、废弃项与移除项全指南
JiekeXu
225次阅读
2025-04-18 20:21:32