欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言連接Oracle數(shù)據(jù)庫的方法

 更新時間:2021年02月07日 14:33:12   作者:灬菜鳥灬  
這篇文章主要介紹了Go語言連接Oracle數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

首先交代一下運行環(huán)境和工具版本:

WIN10

MINGW64

ORACLEINSTANCCLIENT_18_3 x64

Jetbrins Goland

編譯階段:
1. exec: "gcc": executable file not found in %PATH%

2. exec: "pkg-config": executable file not found in %PATH%

3. cannot use (**_Ctype_struct_OCIServer)(unsafe.Pointer(&conn.svc))

(type **_Ctype_struct_OCIServer) as type **_Ctype_struct_OCISvcCtx

in argument to func literal

運行階段:

1. Process finished with exit code -1073741701 (0xC000007B)

2. exit status 3221225595

開始

一、下載ORACLEINSTANCCLIENT 和對應的SDK

下載地址:https://www.oracle.com/technetwork/topics/winx64soft-089540.html

我選用了18.3 x64的版本,能向下兼容,不用擔心

注意basic版本和sdk都需要下載下來,一共是兩個文件

下載之后先解壓basic壓縮包,然后將sdk解壓到basic目錄下:

添加如下環(huán)境變量到系統(tǒng)PATH變量:(按自己的情況添加)

二、下載安裝MINGW64

主要是解決WIN中沒有GCC的問題

如果不安裝后期會出現(xiàn)問題:(exec: "gcc":executable file not foundin %PATH%)

因為之前下載的ORACLEINSTANCCLIENT是64位的所以我們也需要下載MINGW64才能編譯

下載地址:https://sourceforge.net/projects/mingw-w64/files/

注意,第一個是在線安裝程序,較慢,建議直接下載7z壓縮包。解壓即可

解壓之后,添加如下環(huán)境變量到PATH:(按自己的情況添加)

三、獲取GO-OCI8驅動

執(zhí)行命令:go get github.com/wendal/go-oci8

會報一個錯誤:pkg-config: exec: "pkg-config": executable file not found in %PATH%

先忽略,后面會解決

四、修改OCI8.PC

進入GOPATH目錄,找到OCI8.PC文件,打開,修改 紅色框的部分(按你自己的情況)

%GoPath%\src\github.com\wendal\go-oci8\windows

然后:

1.復制此目錄下pkg-config.exe到mingw64下的bin目錄

2.復制此目錄下oci8.pc到mingw64下的lib/pkg-config目錄(pkg-config目錄需要自己建)

添加如下(PKG_CONFIG_PATH)環(huán)境變量:(按自己情況)

五、最后一步

執(zhí)行命令:go get github.com/wendal/go-oci8

此時執(zhí)行這個操作

應該已經(jīng)沒有(pkg-config: exec: "pkg-config": executable file not found in %PATH%)這個錯誤了,如果還有,就是上一步你做的不太對。

但是,還會有新的錯誤出現(xiàn),如下:

不要慌

打開GOPATH目錄下,oci8.go文件

路徑:%GoPath%\src\github.com\wendal\go-oci8

此文件中四處OCIServer為OCISvcCtx

再次!?。?!

執(zhí)行命令:go get github.com/wendal/go-oci8

可以了,完事兒。

讓我們上一段代碼,測試一下:

package main

import (
  "database/sql"
  "fmt"
  "log"
  "os"

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

func query() {
  os.Setenv("NLS_LANG", "AMERICAN_AMERICA.AL32UTF8")
  log.SetFlags(log.Lshortfile | log.LstdFlags)
  db, err := sql.Open("oci8", "j1_bibox/oracle123@10.1.196.200:1521/zjdevdb")
  if err != nil {
    log.Fatal(err)
  }
  defer db.Close()
  rows, err := db.Query("select * from v$version")
  if err != nil {
    log.Fatal(err)
  }
  cols, _ := rows.Columns()
  rawResult := make([][]byte, len(cols))
  result := make([]string, len(cols))
  dest := make([]interface{}, len(cols))
  for i := range rawResult {
    dest[i] = &rawResult[i]
  }
  for rows.Next() {
    err = rows.Scan(dest...)
    for i, raw := range rawResult {
      if raw == nil {
        result[i] = ""
      } else {
        result[i] = string(raw)
      }
    }
    fmt.Printf("%s\n", result[0])
  }
  rows.Close()
}

func main() {
  query()
}

走你

就是這么刺激,還是錯!?。。??????

現(xiàn)在不要慌,冷靜一點,分析情況

首先,如果你的代碼在IDE中運行,會報錯如下:

如果你不信這個邪,在cmd中運行,會報錯如下:

以管理員模式運行

IDE中也可以這樣解決問題:

轉載:https://www.cnblogs.com/jiangyuqin/p/10135963.html

到此這篇關于Go語言連接Oracle數(shù)據(jù)庫的方法的文章就介紹到這了,更多相關Go語言連接Oracle內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • golang如何利用原始套接字構造UDP包詳解

    golang如何利用原始套接字構造UDP包詳解

    這篇文章主要給大家介紹了關于golang如何利用原始套接字構造UDP包的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用golang具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-10-10
  • golang監(jiān)聽文件變化的實例

    golang監(jiān)聽文件變化的實例

    這篇文章主要介紹了golang監(jiān)聽文件變化的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 利用Go語言追加內(nèi)容到文件末尾

    利用Go語言追加內(nèi)容到文件末尾

    關于Go語言讀寫文件,網(wǎng)上很多教程了,但是今天有個需求,想要把內(nèi)容追加寫到文件末尾,在網(wǎng)上找了很久才找到答案,現(xiàn)在分享給大家,有需要的可以參考借鑒。
    2016-09-09
  • 一文帶你輕松學會Go語言動態(tài)調用函數(shù)

    一文帶你輕松學會Go語言動態(tài)調用函數(shù)

    這篇文章主要是帶大家學習一下Go語言是如何動態(tài)調用函數(shù)的,文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的可以參考下
    2022-11-11
  • Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的方法詳解

    Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的方法詳解

    這篇文章主要給大家詳細介紹了Go用兩個協(xié)程交替打印100以內(nèi)的奇偶數(shù)的示例代碼,文中給大家介紹了兩個實現(xiàn)方法,使用無緩沖的channel和設置GOMAXPROCS=1,介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • golang 項目打包部署環(huán)境變量設置方法

    golang 項目打包部署環(huán)境變量設置方法

    最近將 golang 項目打包部署在不同環(huán)境,下面分享一下我的心得體會,對golang 項目打包部署環(huán)境變量設置方法感興趣的朋友一起看看吧
    2024-07-07
  • Go語言之io.ReadAtLeast函數(shù)的基本使用和原理解析

    Go語言之io.ReadAtLeast函數(shù)的基本使用和原理解析

    io.ReadAtLeast函數(shù)是Go語言標準庫提供的一個工具函數(shù),能夠從數(shù)據(jù)源讀取至少指定數(shù)量的字節(jié)數(shù)據(jù)到緩沖區(qū)中,這篇文章主要介紹了io.ReadAtLeast函數(shù)的相關知識,需要的朋友可以參考下
    2023-07-07
  • Golang的Fork/Join實現(xiàn)代碼

    Golang的Fork/Join實現(xiàn)代碼

    Fork/Join本質上是一種任務分解,將一個很大的任務分解成若干個小任務,然后再對小任務進一步分解,直到最小顆粒度,然后并發(fā)執(zhí)行,對Golang的Fork/Join實現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • 學會提升Go語言編碼效率技巧拒絕加班!

    學會提升Go語言編碼效率技巧拒絕加班!

    這篇文章主要為大家介紹了Go語言編碼效率提升技巧詳解,學會了從此拒絕加班,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • golang開發(fā)中channel使用

    golang開發(fā)中channel使用

    channel[通道]是golang的一種重要特性,正是因為channel的存在才使得golang不同于其它語言。這篇文章主要介紹了golang開發(fā)中channel使用,需要的朋友可以參考下
    2020-09-09

最新評論