1 Star 0 Fork 0

c./goframe

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
oracle_open.go 2.16 KB
一键复制 编辑 原始数据 按行查看 历史
admin 提交于 2024-11-05 01:30 . 2024-11-5 替换中文提示完成.
// 版权归GoFrame作者(https://goframe.org)所有。保留所有权利。
//
// 本源代码形式受MIT许可证条款约束。
// 如果未随本文件一同分发MIT许可证副本,
// 您可以在https://github.com/gogf/gf处获取。
// md5:a9832f33b234e3f3
package oracle
import (
"database/sql"
"strings"
gora "github.com/sijms/go-ora/v2"
gdb "gitee.com/go_888/goframe/database/gdb"
gcode "gitee.com/go_888/goframe/errors/gcode"
gerror "gitee.com/go_888/goframe/errors/gerror"
gregex "gitee.com/go_888/goframe/text/gregex"
gconv "gitee.com/go_888/goframe/util/gconv"
)
// X底层Open 创建并返回一个底层的 sql.DB 对象,针对 Oracle。 md5:db2b73d9e41929bd
func (d *Driver) X底层Open(config *gdb.X结构_配置) (db *sql.DB, err error) {
var (
source string
underlyingDriverName = "oracle"
)
options := map[string]string{
"CONNECTION TIMEOUT": "60",
"PREFETCH_ROWS": "25",
}
if config.Debug {
options["TRACE FILE"] = "oracle_trace.log"
}
// [用户名:[密码]@]主机[:端口][/服务名][?参数1=值1&...&参数N=值N]. md5:94680826666597c6
if config.Link != "" {
// ============================================================================
// 从 v2.2.0 版本开始已废弃。
// ============================================================================
// md5:73505fc2089cb531
source = config.Link
// 自定义在运行时更改架构。 md5:69ce0e441b271151
if config.Name != "" {
source, _ = gregex.X替换文本(`@(.+?)/([\w\.\-]+)+`, "@$1/"+config.Name, source)
}
} else {
if config.Extra != "" {
// fix #3226
list := strings.Split(config.Extra, "&")
for _, v := range list {
kv := strings.Split(v, "=")
if len(kv) == 2 {
options[kv[0]] = kv[1]
}
}
}
source = gora.BuildUrl(
config.Host, gconv.X取整数(config.Port), config.Name, config.User, config.Pass, options,
)
}
if db, err = sql.Open(underlyingDriverName, source); err != nil {
err = gerror.X多层错误码并格式化(
gcode.X变量_CodeDbOperationError, err,
`为驱动 "%s" 使用数据源 "%s" 调用 sql.Open 失败`, underlyingDriverName, source,
)
return nil, err
}
return
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go_888/goframe.git
git@gitee.com:go_888/goframe.git
go_888
goframe
goframe
782a3f7170cf

搜索帮助