Go連接數據庫

rana/ora 連接Oracle數據庫

1 環(huán)境配置

1.1 編譯環(huán)境要求

使用下述命令查詢系統(tǒng)是否具備依賴包:

rpm -qa | grep oracle-instantclient

若具備以下依賴則滿足要求:

oracle-instantclient12.1-basic-11.2.0.4.0-1.x86_64.rpm 
oracle-instantclient12.1-devel-11.2.0.4.0-1.x86_64.rpm

若不存在依賴, 點擊傳送門下載. (: 文中的Oracle版本號為12.1, 若有更新則數字相應變動即可.) 下載傳送門, 安裝依賴

rpm -ivh oracle-instantclient12.1-basic-11.2.0.4.0-1.x86_64.rpm oracle-instantclient12.1-devel-11.2.0.4.0-1.x86_64.rpm

1.2 拷貝oci8.pc

$GOPATH/pkg目錄下建立文件oci8.pc (: 此處參考Go的部署)

vim $GOPATH/pkg/oci8.pc

文件內容為

prefix=/usr
includedir=${prefix}/include/oracle/12.1/client64
libdir=${prefix}/lib/oracle/12.1/client64/lib

Name: oci8
Description: Oracle Instant Client
Version: 12.1
Cflags: -I${includedir}
Libs: -L${libdir} -lclntsh

1.3 添加配置文件

vim /etc/ld.so.conf.d/oracle-client-12.1.conf
ldconfig

oracle-client-12.1.conf的內容為:

/usr/lib/oracle/12.1/client64/lib

1.4 配置環(huán)境變量

export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
export DYLD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/
export ORACLE_HOME=/usr/lib/oracle/12.1/client64/
export TNS_ADMIN=/usr/lib/oracle/12.1/client64

2 代碼應用

2.1 基于service name連接

func executeSQL() {
    var (
        gmt_create  sql.NullString
        name        sql.NullString
        raw_value   sql.NullString
        time_waited sql.NullString
    )
    db, err := sql.Open("ora", "jinge/jinge@10.10.90.11:1521/rac1")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    // Set timeout (Go 1.8)
    ctx, _ := context.WithTimeout(context.Background(), 50*time.Second)
    // Set prefetch count (Go 1.8)
    ctx = ora.WithStmtCfg(ctx, ora.Cfg().StmtCfg.SetPrefetchRowCount(1))
    rows, err := db.QueryContext(ctx, s)
    fmt.Println(rows)
    defer rows.Close()
    for rows.Next() {
        err := rows.Scan(&gmt_create, &name, &raw_value, &time_waited)
        if err != nil {
            log.Fatal(err)
        }
        log.Println(gmt_create.String, name.String, raw_value.String, time_waited.String)
    }
    err = rows.Err()
    if err != nil {
        log.Fatal(err)
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容