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

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條評論
主站蜘蛛池模板: 国产精品久久久久蜜芽 | 日本一级特黄大一片免 | 牛牛影院成人免费网页 | 奇米777影视 | 国产网站麻豆精品视频 | 久久综合色视频 | 暗香影院午夜国产精品 | 国产成人精品日本亚洲语音2 | 宅男影院在线观看 | 欧美理论片在线观看 | 99福利在线观看 | 99在线精品视频免费观里 | 大尺度视频网站久久久久久久久 | 国产尤物福利视频在线观看 | 不卡欧美| 久久香蕉综合精品国产 | 天天干天天噜 | 色酷综合| 99精品免费久久久久久久久日本 | 男人看的网址 | 99久久99久久 | 91视频最新网址 | 久久精品国产麻豆不卡 | 毛片基地视频 | 中文字幕日韩国产 | 久久最近最新中文字幕大全 | www.久久99 | 国产精品成人第一区 | 麻豆久久婷婷综合五月国产 | 亚洲国产精品久久久久久网站 | 精品国产一区二区三区久久 | 中文字幕亚洲一区婷婷 | 国产一区二区三区日韩 | 日本一级黄色录像 | 国产精品人成 | 精品中文字幕一区二区三区四区 | 国产在线欧美精品 | 欧美日本亚洲国产一区二区 | 在线精品国产 | a级做人爱免费播放 | 日日干狠狠操 |