1 Star 0 Fork 0

扬思信息/glib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
db.go 1.54 KB
一键复制 编辑 原始数据 按行查看 历史
方俊 提交于 2023-10-27 15:20 +08:00 . add query map and test
package db
import (
"database/sql"
)
type Config struct {
host string
port string
user string
password string
}
type Db struct {
db *sql.DB
Driver string
}
func New(driver string, connection string) (*Db, error) {
conn, err := open(driver, connection)
if err != nil {
return nil, err
}
db := &Db{db: conn, Driver: driver}
if err != nil {
return nil, err
}
return db, nil
}
func open(driver string, conn string) (*sql.DB, error) {
if driver == "mssql" {
return OpenMssql(conn)
}
if driver == "pgsql" {
return OpenPgsql(conn)
}
return OpenSqlite(conn)
}
func (db *Db) Execute(sql string) (int64, error) {
res, err := db.db.Exec(sql)
if err != nil {
return -1, err
}
num, err := res.RowsAffected()
if err != nil {
return -1, err
}
return num, nil
}
func (db *Db) Query(sql string) (*sql.Rows, error) {
rows, err := db.db.Query(sql)
if err != nil {
return nil, err
}
return rows, nil
}
func (db *Db) QueryMap(sql string) ([]map[string]interface{}, error) {
rows, err := db.Query(sql)
if err != nil {
return nil, err
}
defer rows.Close()
cols, err := rows.Columns()
if err != nil {
return nil, err
}
row := make([]interface{}, len(cols))
for idx := range row {
var obj interface{}
row[idx] = &obj
}
var list []map[string]interface{}
for rows.Next() {
_ = rows.Scan(row...)
item := make(map[string]interface{})
for key, val := range row {
item[cols[key]] = *val.(*interface{})
}
list = append(list, item)
}
return list, nil
}
func (db *Db) Close() {
db.db.Close()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/iyoungs/glib.git
git@gitee.com:iyoungs/glib.git
iyoungs
glib
glib
v0.0.1

搜索帮助