问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java如何连接Oracle数据库,我下了个oracle11g 没安装客户端,建立了loagosad数据库,

发布网友 发布时间:2022-04-10 15:52

我来回答

5个回答

懂视网 时间:2022-04-10 20:14

倒腾了半天终于连接好了

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都需要下载下来,一共是两个文件

技术分享图片

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

技术分享图片

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

技术分享图片

 

 二、下载安装MINGW64

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

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

因为之前下载的ORACLE INSTANCCLIENT是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%srcgithub.comwendalgo-oci8windows

技术分享图片

然后:

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%srcgithub.comwendalgo-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
", result[0])
 }
 rows.Close()
}

func main() {
 query()
}

走你

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

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

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

技术分享图片

技术分享图片

 

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

技术分享图片

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

然后发现卵用没有

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

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

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

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

技术分享图片

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

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

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

技术分享图片

 

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

 技术分享图片

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

Go语言连接Oracle(就我这个最全)

标签:第一个   打开   iter   综合   process   ann   file   []   pointer   

热心网友 时间:2022-04-10 17:22

只需要改动 UserName 和 Password
也就是 loagosa 和 Hangel5460

Connection conn = null;
Class.forName("oracle.jdbc.driver.OracleDriver");//加入oracle的驱动,“”里面是驱动的路径

String url = "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL";// 数据库连接,oracle代表链接的是oracle数据库;thin:@MyDbComputerNameOrIP代表的是数据库所在的IP地址(可以保留thin:);1521代表链接数据库的端口号;ORCL代表的是数据库名称

String UserName = "root";// 数据库用户登陆名 ( 也有说是 schema 名字的 )

String Password = "2006";// 密码

conn = DriverManager.getConnection(url, UserName, Password);

热心网友 时间:2022-04-10 18:40

getConnection中的URL写错了,不是odbc里配的,应该是类似于 jdbc:oracle:thin:@192.168.0.20:1521:orcl

热心网友 时间:2022-04-10 20:14

xh=rs.getString("学号");
xm=rs.getString("姓名");
xb=rs.getString("班级");
bjdm=rs.getString("班级代码");

热心网友 时间:2022-04-10 22:06

报错信息粘出来追问java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@loagosad:1521:loagosad

追答1:检查你的jar包有没有引入
2:jar引入的话查看jar包的版本是否和数据库匹配
3:查看驱动的url地址是否正确
驱动的url书上或者网上都有,看看是否正确,jar的话需要去查看下版本啦

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
健康快乐歌词 美的电热水器美肤浴原理 UPS蓄电池寿命是多长 怎么正确使用保养UPS不间断电源 2000年属什么生肖配对最好 一根甘蔗有多少糖分(一根甘蔗相当于几碗米饭的热量 方法) 一根甘蔗含糖量多少(糖尿病能喝甘蔗水吗 步骤详解) ...1 4 5 B超结果:肝功能正常 脾大,脾胀 HBV-DNA〈1000为阳性 这个需 ... ...还有两个老人要养,这种情况能给多少抚养费? 离婚分居两年八个月!对方要求一次性付清抚养费另一方要求一年一给法院会... 搞笑动画《梦游》的剧情设计是怎样的? 中华*(1911-1949年)期间,北洋*,国民*一共发行了几种面值的货币? 真正的QQ怎么创群? 三种重要的函数类型有什么? 初中所有函数类型的图像 C语言函数类型有那些? C语言的函数类型分成哪些种类? 举例所有学过的函数类型 函数有几种类型,他们的定义是设么? 所有函数类型及性质。 函数种类 函数的种类有哪些? 函数类型有哪些? go语言oracle需要获取多行数据信息用什么命令?mysql的为db.Select(),oracle的为什么? 请教电磨刻字 木雕电磨用什么牌子好 手磨和电磨的区别? 关于电磨~电磨是否能用来抛光亚克力或者塑料之类的制品 电磨、角磨的问题 电磨到底能切割金属吗? 请问电磨与吊磨机的区别? 快手8万粉丝,播放量3000左右正常吗? 中信建投证券手续费 中信建投 第三方存管 手续费 在拼多多上开网店,挂别人的链家挣佣金可靠吗 刷到的新闻,链家免收租客中介费了,可信吗? 赤峰链诚链家公司靠谱吗? 可以办E丅C的工商银行网点 网上代开增值税专用发票需要怎么取 网上申请开具增值税专用发票需要什么浏览器 女生的左手小指戴戒指是什么意思? 女生左手小指戴戒指什么意思 求 新暗行御史 百度网盘免费资源下载链接,谢谢 跪求新暗行御史2020年由 金明洙主演的百度云资源 想看新暗行御史2020年上映的由金明洙主演的百度云资源 【合集】韩国古装剧大全最新古装电视剧大全,【在线观看】免费百度云资源 【合集】权娜拉主演的电视剧,【免费高清】在线观看百度网盘资源 盘点权娜拉电视剧,【免费高清】在线观看百度网盘资源 盘点权娜拉演过什么电视剧,【免费高清】在线观看百度网盘资源 新暗行御史怎么只有2集 新暗行御史漫画全集17卷加外传打包下载,可以发给我吗,邮 箱,链接,什么都行,有效就行