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

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條評論
主站蜘蛛池模板: 亚洲天天做日日做天天欢毛片 | 国产精品亚洲精品影院 | 欧美一区二区三区免费观看视频 | 国产精品爱久久久久久久9999 | 精品国免费一区二区三区 | 久久综合久久久久 | 国内精品视频在线播放一区 | 日韩一区在线视频 | 亚洲精品美女在线观看 | 亚洲国产成人精品一区二区三区 | 国产一区亚洲一区 | 日韩亚洲视频 | 亚洲第一成人在线 | 国产在线播放成人免费 | 青青青免费手机版视频在线观看 | 免费视频日韩 | 国产成人福利 | 国产精品夜色7777青苹果 | 日本一区二区三区四区在线观看 | 97狠狠操| 久久精品视频1 | 色综合图 | 中文字幕精品一区二区精品 | 成视频年人黄网站免费视频 | 欧美一区二区视频 | 一级成人毛片免费观看 | 色婷婷在线观看视频 | 国产欧美亚洲精品一区 | 国产一国产一级毛片视频 | 久久国产成人亚洲精品影院老金 | 男女车车好快的车车免费网站 | 久久的精品99精品66 | 日韩成人免费在线视频 | 伊人精品成人久久综合欧美 | 久草网视频在线观看 | 亚洲精品久久久久中文 | 亚洲人人草 | 久久综合亚洲伊人色 | 一区二区日本 | 毛片在线看网站 | 成年女人永久免费观看片 |