哪种语言 连接 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系统蓝…

服务器访问oracle数据库,Oracle数据库的访问——通过不同服务器名对数据库的访问...

服务器端完成配置后,现在客户端可以通过不同的网络服务名配置来访问这个数据库,下面是一个配置示范:EYGLE(DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL TCP)(HOST 172.16.33.11)(PORT 1521)))(CONNECT_DATA (SERVICE_NAME eygle)))JU…

oracle质数怎么算,借花献佛之使用Oracle sql求质数(笔记)

首先声明一点,文章内容从itpub论坛上看到的,原文链接 http://www.itpub.net/thread-1849398-1-1.html,本文主要是记录下笔记,原文中有更详细的分析。使用sql求质素没什么实用价值,重要的是思路。(一)最简单的方法思路&…

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

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

Oracle distinct后加as,【大话IT】为何加distinct之后就不走索引了

还是一样&#xff0c;16:45:44 SQL> l1 select site_id,2 count(*) sendnum3 from4 (select site_id,5 ewb_no6 from prod_send t7 where scan_time > to_date(2015-05-15, yyyy-mm-dd)8 and scan_time < to_date(2015-05-16, yyyy-mm-…

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

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

matlab 图像矢量量化,MATLAB环境下基于矢量量化的说话人识别系统(1)

第21卷第6期湖 北 工 业 大 学 学 报2006年12月Vol.21No.6 Journal of Hubei Univer sity of Technology Dec.2006[收稿日期]2006-10-13[作者简介]宋 敏(1979-),女,湖北武汉人,湖北工业大学硕士研究生,研究方向:计算机语音技术应用.[文章编号]1003-4684(2006)1220027203MATLAB …

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

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

oracle窗帘位图索引,Greenplum数据库设计开发规范参考.docx

Greenplum数据库设计开发规范参考Greenplum数据库设计开发规范参考文档2016年7月目 录Greenplum数据库设计开发规范1V1.511 前言41.1 文档目的41.2 文档范围41.3 预期读者41.4 参考资料42 开发规范检查项43 GP与TD的差异关注点64 系统级设计74.1 用户设计74.1.1 超级用户84.1.2…

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

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

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

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

oracle (+)的可读性,Oracle基础笔记一

1.基本 SELECT 语句1.基本 SELECT 语句SELECT 标识 选择哪些列。FROM 标识从哪个表中选择。注意&#xff1a;SQL 语言大小写不敏感。SQL 可以写在一行或者多行关键字不能被缩写也不能分行各子句一般要分行写。使用缩进提高语句的可读性。2.算术运算符( - * /)数字和日期使…

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

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

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

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

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

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

vb ftp linux,VB FTP上传和下载模块

Option ExplicitPrivate Const INTERNET_OPEN_TYPE_DIRECT 1Private Const scuseragent "vb wininet"Private Const INTERNET_FLAG_PASSIVE &H8000000调用设置环境Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOp…

python struct pack一个数组_Python中struct.pack的一个疑问

展开全部的确很奇怪。我试验了10几分钟&#xff0c;你按下面的方法来做就可以正确。import structzzz ("{Type:2}").encode("utf-8")length len(zzz)a struct.pack("%ds"%length,zzz)print(a)简单的说32313133353236313431303231363533e59b9e…

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

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

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

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

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

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