代码拉取完成,页面将自动刷新
同步操作将从 go-admin/go-admin 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package performer
import (
"database/sql"
"github.com/chenhg5/go-admin/modules/connections/converter"
"regexp"
"strings"
)
func Query(db *sql.DB, query string, args ...interface{}) ([]map[string]interface{}, *sql.Rows) {
rs, err := db.Query(query, args...)
if err != nil {
if rs != nil {
rs.Close()
}
panic(err)
}
col, colErr := rs.Columns()
if colErr != nil {
if rs != nil {
rs.Close()
}
panic(colErr)
}
typeVal, err := rs.ColumnTypes()
if err != nil {
if rs != nil {
rs.Close()
}
panic(err)
}
// TODO: 正则表达式为了适配 sqlite
// 这里判断 driver 减少正则的性能损耗
results := make([]map[string]interface{}, 0)
r, _ := regexp.Compile("\\((.*)\\)")
for rs.Next() {
var colVar = make([]interface{}, len(col))
for i := 0; i < len(col); i++ {
typeName := strings.ToUpper(r.ReplaceAllString(typeVal[i].DatabaseTypeName(), ""))
converter.SetColVarType(&colVar, i, typeName)
}
result := make(map[string]interface{})
if scanErr := rs.Scan(colVar...); scanErr != nil {
rs.Close()
panic(scanErr)
}
for j := 0; j < len(col); j++ {
typeName := strings.ToUpper(r.ReplaceAllString(typeVal[j].DatabaseTypeName(), ""))
converter.SetResultValue(&result, col[j], colVar[j], typeName)
}
results = append(results, result)
}
if err := rs.Err(); err != nil {
if rs != nil {
rs.Close()
}
panic(err)
}
rs.Close()
return results, rs
}
func Exec(db *sql.DB, query string, args ...interface{}) sql.Result {
rs, err := db.Exec(query, args...)
if err != nil {
panic(err.Error())
}
return rs
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。