Go连接oracle驱动,Go语言连接Oracle

Go语言连接Oracle

首先交代一下运行环境和工具版本:

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目录下:

添加如下环境变量到系统PATH变量:(按自己的情况添加)

二、下载安装MINGW64

主要是解决WIN中没有GCC的问题

如果不安装后期会出现问题:(exec: "gcc":executable file not foundin %PATH%)

因为之前下载的ORACLEINSTANCCLIENT是64位的所以我们也需要下载MINGW64才能编译

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

注意,第一个是在线安装程序,较慢,建议直接下载7z压缩包。解压即可

解压之后,添加如下环境变量到PATH:(按自己的情况添加)

三、获取GO-OCI8驱动

执行命令: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)环境变量:(按自己情况)

五、最后一步

执行命令:go get github.com/wendal/go-oci8

此时执行这个操作

应该已经没有(pkg-config: exec: "pkg-config": executable file not found in %PATH%)这个错误了,如果还有,就是上一步你做的不太对。

但是,还会有新的错误出现,如下:

不要慌

打开GOPATH目录下,oci8.go文件

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

此文件中四处OCIServer为OCISvcCtx

再次!!!!

执行命令: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()

}

走你

就是这么刺激,还是错!!!!

现在不要慌,冷静一点,分析情况

首先,如果你的代码在IDE中运行,会报错如下:

如果你不信这个邪,在cmd中运行,会报错如下:

以管理员模式运行

IDE中也可以这样解决问题:

转载:https://www.cnblogs.com/jiangyuqin/p/10135963.html

Go语言连接Oracle 相关文章

python 连接clickhouse 操作

from clickhouse_driver import Client def clickhouse16(): #clickhouse: id , 端口 , 用户名,密码 return Client(host='192.168.10.16', port='8123', user='root', password='123456') def save_clickhouse(table, all_data): sig = 0 list1 = [] for i

Oracle 颠覆认知的无函数处理限定条件字段也可以用上函数索引

Oracle 颠覆认知的无函数处理限定条件字段也可以用上函数索引 前言 之前搞SQL优化过程中,遇到一个限定条件为where create_time = sysdate - 7之后用上函数索引的情况,这个索引创建之初使用了trunc(create_time)做了处理。 这个就有点颠覆我之前的认知了--

从零开始教你安装Oracle数据库

1、数据库安装 1.1下载 根据自己的操作系统位数,到oracle官网下载(以oracle 11g 为例) 之后把两个压缩包解压到同一个文件夹内(需要注意的是,这个文件夹路径名称中最好不要出现中文、空格等不规则字符。) 注意:下载的是Oracle DataBase数据库服务器!

C语言简介与第一个C语言程序

一、C语言产生的背景 C语言的出现与操作系统Unix是分不开的。Unix是1969年由美国贝尔实验室的K. Thompson和D. M. Ritchie两人用汇编语言编写,它存在许多不足,因此,需要一种新的语言重新编写Unix。 A(Algol)语言 出现于1960年,是一种面向问题的高级语言,

Hive的JDBC连接配置

首相要安装好hive 1.首先修改配置文件文件为hive 路径下的 conf/hive-sit.xml 将内容增加 property namehive.server2.thrift.port/name value10000/value descriptionPort number of HiveServer2 Thrift interface. Can be overridden by setting $HIVE_SERV

杂记001. 计算机底层-汇编语言

一、二进制 1、 打开计算机 :Windows + R + 'calc' 2、 进制代码 :十六进制 HEX ? 十进制 DEC ? 八进制 OCT ? 二进制 BIN 3、 进制的运算 : 查表 -- 每一种进制都有完美的运算规律,不必将其他进制转化为十进制后再运算 4、 为什么要学习理解二进制 ?寄存

oracle move lob 字段到另外的表空间

Hi, I will explain How to Move Lob Segment to Another Tablespace in Oracle in this post. Move Lob Segment to Another Tablespace Sometimes you may need to drop any tablespace, so you need to move all objects in this tablespace. Moving lob s

go语言的特色是什么

go语言的特色:1、简洁、快速、安全;2、并行、有趣、开源;3、内存管理、数组安全、编译迅速。go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 本文操作环境:windows10系统、Go 1.11.2、thinkpad t480电脑。 Go 是一个开源的编程语言

maven建立逆向工程中出现的错误

一、连接数据库的driver错误 1、提示: Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class i

C语言入门学习(第八天——break、continue与万恶的goto)

镇楼图 Pixiv:千夜QYS3 这次来学几个简单实用的语句 一、break 用来跳出(打破)循环结构或switch结构。 只会跳出当前所在的这一层 /*用户去不断输入数字直到输入到了数字以外的字符停止输入然后输出这些数字的总乘积*/char a;long long sum=1;while(1){ a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值