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

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條評論
主站蜘蛛池模板: 黄色网址视频在线播放 | 国产免费午夜a无码v视频 | 九九视频在线免费观看 | 国产精品美女久久久久网 | 国产精品欧美在线观看 | 目韩一区二区三区系列片丶 | 美女网站色视频 | 最新国产麻豆精品 | 久久国产精品自由自在 | 四虎影院免费 | 精品国产亚一区二区三区 | 日韩精品大片 | 一区二区三区欧美在线 | 亚洲视频免 | 久草在线视频免费播放 | 狠狠躁夜夜躁人人爽天天天天 | 亚洲人成依人成综合网 | 884hutv四虎永久7777| 久久精品re| 思思久久99热这里只有精品66 | 国产精品久久久久天天影视 | 88国产经典欧美一区二区三区 | 亚洲精品1区 | 成人毛片免费观看视频在线 | 午夜在线影院 | 天堂成人一区二区三区 | 两性影院| 午夜一级视频 | sihu永久在线播放地址 | 在线观看精品国语偷拍 | 国产欧美一区二区三区精品 | 久久国内精品视频 | 国内精品一级毛片免费看 | 久草色播| 手机在线一区二区三区 | 婷婷综合激情网 | 欧美一级毛片免费看视频 | 中国美女一级毛片 | 国产区久久 | 九九热这里只有国产精品 | 亚洲欧美中日韩中文字幕 |