
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




