亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

go orcale

系統 2049 0

golang連接orcale

?

? ? 使用glang有一段時間了,最開始其實并不太喜歡他的語法,但是后來熟悉之后發現用起來還挺爽的。之前數據庫一直使用mysql,連接起來沒有什么問題,github上有很多完善的驅動,所以以為連接其他數據庫也應該沒什么問題,近日聽說其連接orcale比較麻煩,所以就試了試。

? ? 之所以連接orcale比較麻煩是因為orcale并沒有提供golang的驅動,所以并不能像java那樣引入個驅動包就能連接,也不能像mysql之類的開源數據庫可以自己實現驅動。不過正所謂天無絕人之路,既然純go實現不了,那么還可以用cgo實現,c語言總該支持了吧。
? ? 網上有很多方法,不過都是使用oci實現的,這里我們使用go-oci8(https://github.com/wendal/go-oci8)

一、安裝MinGW

? ? 首先我們先來配置環境,由于cgo需要gcc支持,所以需要配置gcc環境,如果是linux下一般可以跳過該步驟,win下則需要自己安裝了,這里我們使用 MinGW ,可以到官網現下載,不過官網直接提供的安裝程序需要安裝時聯網下載,很可能會失敗,所以幾經搜索之后找到如下網址:

  • ?MinGW下載地址相關:http://blog.csdn.net/mecho/article/details/24305369

? ? 里邊詳細介紹了MinGW各版本的不同,可根據自己情況下載,由于我是64位,這里下載 64位的 POSIX版本
? ? 具體的安裝過程就不費話了,直接解壓即可。

二、安裝OCI

? ? 由于沒有對應驅動包,我們不能直接連接,所以需要通過orcale提供OCI接口(有點像odbc),里邊包含需要的類庫。下載直接官網就行,找到系統對應版本:

  • oci下載地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html

? ? 需下載Basic和SDK,下載后解壓Basic到instantclient_11_1,然后將SDK解壓到instantclient_11_1\sdk下。
? ? 在instantclient_11_1下建立\network\admin\目錄,添加tnsnames.ora(這個就不解釋了吧),內容根據自己的orcale設置。

三、配置go-oci8

? ? 直接go get?github.com/wendal/go-oci8(報錯不用管),然后到go\src\github.com/wendal\go-oci8\windows下,將pkg-config.exe拷貝到MinGW\bin下,將oci8.pc復制到MinGW\lib\pkg-config\下,并且編輯oci8.pc:

          # Package Information for pkg-config

prefix=修改為instantclient_11_1目錄,如F:/dev/instantclient_11_1

exec_prefix=修改為instantclient_11_1目錄,如F:/dev/instantclient_11_1

libdir=${exec_prefix}

includedir=${prefix}/sdk/include/



Name: OCI

Description: Oracle database engine

Version: 11.2

Libs: -L${libdir} -loci

Libs.private: 

Cflags: -I${includedir}
        

四、設置環境變量

? ? 環境變量path下添加instantclient_11_1和mingw\bin的路徑
? ? 添加PKG_CONFIG_PATH=C:\mingw\lib\pkg-config
????添加TNS_ADMIN=F:\dev\instantclient_11_1\network\admin\

五、測試

? ? 在此執行go get?github.com/wendal/go-oci8,如果沒錯那說明大功告成。具體測試代碼見github.com\wendal\go-oci8\example下的oracle.go,注意要把里邊import中的mattn改成wendal。一下是我的代碼:

          package main

import (

    "database/sql"

    _ "github.com/wendal/go-oci8"

    "log"

)

func query() {

    // 為log添加短文件名,方便查看行數

    log.SetFlags(log.Lshortfile | log.LstdFlags)

    // 用戶名/密碼@實例名  跟sqlplus的conn命令類似

    db, err := sql.Open("oci8", "username/pwd@ORCL")

    if err != nil {

        log.Fatal(err)

    }

    defer db.Close()



    rows, err := db.Query("select name from FUB_B")

    if err != nil {

        log.Fatal(err)

    }



    for rows.Next() {

        var name string

        rows.Scan(&name)

        log.Printf("Name = %s, len=%d", name, len(name))

    }

    rows.Close()

}



func update() {

    // 為log添加短文件名,方便查看行數

    log.SetFlags(log.Lshortfile | log.LstdFlags)

    // 用戶名/密碼@實例名  跟sqlplus的conn命令類似

    db, err := sql.Open("oci8", "username/pwd@ORCL")

    if err != nil {

        log.Fatal(err)

    }

    defer db.Close()



    stmt, _ := db.Prepare(`UPDATE FUB_B set name ='cnm'`)

    result, err := stmt.Exec()

    if err != nil {

        log.Fatal(err)

    }

    count, _ := result.RowsAffected()

    log.Printf("result count:%d", count)

}



func main() {

    update()

}
        

?

?

?

?
?
分類:? golang

go orcale


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩在线第二页 | 免费网站成人亚洲 | 最新国产精品久久精品 | 国产中文欧美 | 成人精品一区二区三区中文字幕 | 在线500福利视频国产 | 精品免费国产一区二区女 | 中国jizz妇女jizz妇女 | 99久视频| 久久精品亚洲日本筱田优 | 欧美综合色 | 伊人久久波多野结衣中文字幕 | 亚洲人成亚洲精品 | 久久永久免费 | 亚洲不卡视频 | 午夜亚洲国产理论秋霞 | 亚洲国产精品视频在线观看 | 亚洲第一人黄所 | 久久亚洲国产精品一区二区 | 毛片大片免费看 | 久久精品国产精品国产精品污 | 九色官网| 日日添日日摸 | 欧洲色网 | 国产一区日韩二区欧美三 | 轻轻操在线观看 | 四虎成人www国产精品 | 69日本xxxxxxxx59| 精品国产品欧美日产在线 | 五月桃花网婷婷亚洲综合 | 午夜香蕉| 成人精品一区二区三区中文字幕 | 欧美精品v欧洲精品 | 99久久综合国产精品免费 | 欧美午夜在线观看 | 亚洲欧美日韩中文字幕在线 | 亚洲国产一区二区三区精品 | 色偷偷亚洲 | 中文字幕亚洲综合久久男男 | 国产1区2区三区不卡 | www九色|