代码拉取完成,页面将自动刷新
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"reflect"
)
var database *sql.DB
// InitDb 初始化数据库
func InitDb(username string, password string, ip string, dbname string) {
db, err := sql.Open("mysql", username+":"+password+"@tcp("+ip+")/"+dbname)
if err != nil {
panic(err)
}
err = db.Ping()
if err != nil {
panic(err)
}
database = db
}
// CloseDb 关闭数据库连接
func CloseDb() {
err := database.Close()
if err != nil {
panic(err)
}
}
// Query 使用反射将数据库查询结果赋值到结构体字段
func Query(des interface{}, sql string, param ...any) {
rows, err := database.Query(sql, param...)
if err != nil {
panic(err)
}
defer rows.Close()
//从数据库查出来的字段名数组
columns, _ := rows.Columns()
values := make([]interface{}, len(columns))
for i, v := range columns {
var v2 = []rune(v)
//首字母转大写
v2[0] -= 'a' - 'A'
values[i] = reflect.ValueOf(des).Elem().FieldByName(string(v2)).Addr().Interface()
}
for rows.Next() {
err = rows.Scan(values...)
if err != nil {
panic(err)
}
}
}
// Exec 执行sql但不返回行数据
func Exec(sql string, param ...any) sql.Result {
result, err := database.Exec(sql, param...)
if err != nil {
panic(err)
}
return result
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。