加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
db.go 1.27 KB
一键复制 编辑 原始数据 按行查看 历史
lizijian83 提交于 2022-04-12 12:03 . init
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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化