哪种语言 连接 oracle,Go语言连接Oracle(就我这个最全)

综合参考了网上挺多的方案

倒腾了半天终于连接好了

Go都出来这么多年了

还没有个Oracle的官方驱动。。。

过程真的很蛋疼。。一度想放弃直接连ODBC

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

WIN10

MINGW64

ORACLE INSTANCCLIENT_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

开始

一、下载ORACLE INSTANCCLIENT 和对应的SDK

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

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

注意basic版本和sdk都需要下载下来,一共是两个文件

9ad1e29e1b2e91e4805d2fbdc0a3be82.png

下载之后先解压basic压缩包,然后将sdk解压到basic目录下:

3eb076faebd46dfdd9675d38d5d1bd24.png

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

9bbdb95bed384f7c98fcb62e2ee44c95.png

二、下载安装MINGW64

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

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

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

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

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

689b781664a0194656b15ab91218d216.png

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

6905f42efbdf7355f484d46a63680ae1.png

三、获取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

83ba500e49e3e480ec62ce5830bc8200.png

然后:

1.复制此目录下pkg-config.exe到mingw64下的bin目录

ce58ed3f45299b8b09dc368ff49956da.png

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

99a0c70630660acadf84c3e7198c5241.png

添加如下(PKG_CONFIG_PATH)环境变量:(按自己情况)

bb357e4e703be056fb0645da7d3c09d3.png

五、最后一步

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

此时执行这个操作

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

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

44954088401391a524a8620c553ac81f.png

不要慌

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

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

此文件中四处OCIServer为OCISvcCtx

c1de4141325aeed8b6a12b57dcad6d52.png

再次!!!!

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

可以了,完事儿。

让我们上一段代码,测试一下:

package mainimport ("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]

}forrows.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中运行,会报错如下:

bfae0741b72ac5692f480a6014f17e73.png

e015759c00ef78cb41b4167030d5c444.png

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

900418effe7adbb7e3d736b4646007df.png

然后你拿着报错信息,去找度娘,有人会告诉你,你的instanceclient版本不对,然后你就不停的换版本,换版本,换版本

然后发现卵用没有

对,那个人就是我,=_=???????

现在!!我现在!!告诉你!!

真相只有一个!!!!!!!!

那就是:以管理员模式运行

96ef23e3b4935d11eb5ba0e355390f58.png

来到这,无数次失败,无数次尝试最后获得成功的激动,瞬间就把你点燃。

恐怕这就是计算机世界吸引我的地方吧。

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

0d8677bc32ec17e683ec1f79a70f3c50.png

最后的最后,让我们给这段代码加个注释:

de0d0dc3a52059ea2717ed1901afad54.png

最后的最后的最后,如有指教,请留言。

原文出处:https://www.cnblogs.com/jiangyuqin/p/10135963.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

补丁程序正在运行_针对微软4月14日更新补丁会导致蓝屏问题的检测及解决方法...

近期,我们接连收到用户求助,在使用电脑过程中会突然出现蓝屏问题,经火绒工程师分析发现,大部分用户出现蓝屏问题,是因为安装了微软于4月14日推送的补丁所致(详见下图)。目前微软方面表示正在调查相关问题。Win10系统蓝…

商城html源码_Java开源商城源码推荐,从菜鸡到大神,永远绕不开的商城系统

每个Java程序员,从懵逼菜鸡,再到懵懂菜鸟,再到小鸟,大鸟,最后到技术大神,始终绕不开商城系统,里面蕴含了大量的业务,涉及到了大量的知识点和解决方案。今天锋哥介绍一款Java开源商城…

cpu只能单通道是什么表现_【小白入门】为什么要组内存双通道?

更新时间:2020年5月11日 内容提要: 1.内存双通道的原理 2.如何组双通道很多小白在购买内存的时候,不知道该购买一根单16G还是两根单8G,看完本篇文章你将知道内存双通道的优势。1.内存双通道的原理选择两根单8G组成双通道&#xff…

雷云3灯光配置文件_雷蛇的哪种键盘最适合入手?3款最佳雷蛇键盘推荐。

更新时间2020.8.6本次主要内容是雷蛇的三款不同价位的雷蛇键盘推荐,有需要的小伙伴可以看一下哦,也许你想要入手的键盘就在其中。---------------------------------雷蛇黑寡妇蜘蛛精英版--------------------------------------黑寡妇蜘蛛精英版在猎魂光…

某些您可以编辑的区域交叠在一起 可能不能同时显示_DX200操作要领—修改与编辑程序(三十九)...

3.5 修改程序3.5.1 程序的调出1. 选择主菜单中的【程序内容】2. 选择【程序选择】–显示程序一览表。3. 选择要调出的程序3.5.2 程序相关画面程序相关画面有下面5种,可以确认/编辑每个程序的设定或登录。•程序标题画面显示和编辑注释、登录日期、编辑禁止的状态等。…

求二叉树中以x为根的子树的深度_还在玩耍的你,该总结啦!(本周小结之二叉树)...

给「代码随想录」一个星标吧!❝有学习就要有总结❞本周小结本周赶上了十一国庆,估计大家已经对本周末没什么概念了,但是我们该做总结还是要做总结的。本周的主题其实是「简单但并不简单」,本周所选的题目大多是看一下就会的题目&a…

钉钉功能介绍_平棉集团组织召开阿里钉钉办公系统基础功能培训会

4月11日上午,平棉集团在总部26楼多媒体会议室组织召开阿里钉钉办公系统基础功能培训会,邀请河南一一信息技术公司经理杨杉前来授课。集团公司董事长张先顺及公司领导陈亚民、王仲山、王向阳、陶尚林,各生产经营单位主管销售工作的负责人和公司…

qemu搭建arm运行linux内核,centos使用qemu搭建ARM64运行环境

准备工作(1) linux 内核源码, 从github上获取git clone https://github.com/torvalds/linuxmake kernelversion(2) 交叉编译工具,从linaro官网(www.linaro.org)上获取解压后设置环境变量即可xz -d gcc-linaro-xxx.tar.xztar -xvf gcc-linaro-xxx.tarexpo…

java 某年某月中第几周 开始时间和结束时间_重磅!库里又要签下一超级大合同!4年2亿啊!退役时间也定了...

好家伙!现在的超级巨星都喜欢提前续约了,继詹姆斯与湖人签下两年8500万美元顶薪协议后,库里也有望达成这一成就。当地时间周一训练结束后,他接受采访谈到自己的续约问题,表示已经和球队交流过,同时明确表态…

linux list 添加失败,linux运维实战案例之Argument list too long错误与解决方法

1、错误现象这是一台Mysql数据库服务器,在系统中运行了很多定时任务,今天通过crontab命令又添加了一个计划任务,退出时发生了如下报错:#crontab -e编辑完成后,保存退出,就出现下面如下图所示错误&#xff1…

软件项目周报模板_一份高质量的职场工作周报,要这样写

周报是会呼吸的痛,它会在每个周五来回滚动。几乎每个职场人都会为周报所折腰,因为周报看起来是小事,但又不仅仅是小事。周报,是职场人士对一周工作的总结和记录,是展示自己工作状态和成果的重要载体,是领导…

linux 多线程客户端服务端通信,[转载]多线程实现服务器和客户端、客户端和客户端通信;需要代码,留言...

一、实验名称动手打造自己的 IM二、实验目的1本次实验旨在锻炼大家的Socket编程能力,以日常生活中广泛使用的IM软件为背景,培养大家对于网络编程的兴趣。2、通过本次实验,培养linux环境下网络编程能力,使得我们对网络应用层的网络…

linux 设置ssh并发度,在linux如何使用ControlPersist加快SSH连接速度的问题

不经意间我们又来到了文章的学习,在众多学习中,我们的文章也许不起眼,但是想必大家都有很多问题吧,所以重要的下面我们就来讲解一下,大家一定要认真看奥!!Linux系统进行服务器配置管理迁移的时候…

linux下c标准库位置,C 标准库 IO 使用详解

其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数、输出参数和返回值,接下来才能开始设计具体的实现过程。C 语言标准库提供的接口功能很有限,不像 Python 库。不过想把它用好也不容…

linux docker查看容器状态,Docker容器状态命令行工具——Ctop

Ctop是和Linux top展示效果类似的一个容器状态监视工具,Ctop可以动态的显示容器的cpu、内存、网络的使用情况。一共有两个叫Ctop的命令行工具,分别由GO和Python实现。Python实现的版本功能更强大一些。GO实现版本安装Linux$ wget https://github.com/bci…

plsql表设置主键_对复制实施主键约束

作者:Pedro Gomes 译:徐轶韬在本文中,我们介绍一个配置选项,该选项控制复制通道是否允许创建没有主键的表。这延续了我们最近在复制安全性方面的工作,在该工作中,我们允许用户强制执行权限检查和/或强制执行…

一键刷入twrp_小米/红米手机到手了该怎么解锁和刷 twrp

资源准备:1.百度搜索小米解锁申请,进行申请解锁并下载解锁工具。如图。文件夹里有对应的驱动,要安装好。2.对应机型的 twrp。在 w大的微博下找(wzsx150)或者在酷安找或者去twrp官网。3.edxp相关的包(两个)(不需要框架的可以忽略)4.手(第一步&…

如何将计算思维融合到C语言程序设计中,浅析基于计算思维的C语言程序设计教学...

浅析基于计算思维的C语言程序设计教学摘要:C语言是关键词:计算思维;C语言;教学改革中图分类号:TP3 文献标识码:A文章编号:1009-3044(2020)16-0145-02C语言是计算机相关专业的必修基础课程,是学生接触的第一…

一直在构建工作空间_智能工作空间让Dropbox拥有无限扩展潜力

智能工作空间让Dropbox拥有无限扩展潜力Dropbox一直以“让工作变得更好”的使命。在竞争激烈的市场中,Dropbox有着卓越的历史,就连苹果创始人史蒂夫乔布斯曾经提出来要收购它。Dropbox的智能工作空间是一个开放的生态系统,由于其开放集成的特…

黄金分割小数点后100位小数的c语言编程,黄金分割数小数点后100位

满意答案su304_3212013.03.25采纳率:57% 等级:12已帮助:10017人黄金分割奇妙之处,在于其比例与其倒数是一样的。例如:1.618的倒数是0.618,而1.618:1与1:0.618是一样的。确切值为根号51/2黄金分割数是无理…