您现在的位置是:首页 > 编程 > 

【Golang】使用godror操作Oracle数据库

2025-07-27 13:06:21
【Golang】使用godror操作Oracle数据库 前言由于Oracle通常用于大型企业和特定行业而且具有独特的特性和复杂性,golang中我们比较易用的gorm,ent,xorm等orm库都不支持。本文选择了较为成熟的驱动库:github/godror/godror,该库相对sijms/go-ora较为复杂,运行时需要依赖环境。目的如图所示,godror虽然在编译时只需要安装 gcc(该过程

【Golang】使用godror操作Oracle数据库

前言

由于Oracle通常用于大型企业和特定行业而且具有独特的特性和复杂性,golang中我们比较易用的gormentxorm等orm库都不支持。本文选择了较为成熟的驱动库:github/godror/godror,该库相对sijms/go-ora较为复杂,运行时需要依赖环境。

目的

如图所示,godror虽然在编译时只需要安装 gcc(该过程本文不再演示),但在运行时却需要依赖 ODPI-C。一番折腾下来还是有些繁琐,本文将整个操作步骤记录下来,与需要的 Go 开发者分享。

安装ODPI-C

说明文档:[2. Installing ODPI-C ](.html)

下载地址:Oracle Instant Client Downloads

windows

  • 下载
  • 解压
  • 配置环境变量

说明:

Linux(Ubuntu)

  • 下载包
  • 解压
代码语言:javascript代码运行次数:0运行复制
root@DESKTOP-BB0KRFQ:/home/oracle# ls
instantclient-basic-linux.x64-2.5.0.24.07.zip
root@DESKTOP-BB0KRFQ:/home/oracle# unzip instantclient-basic-linux.x64-2.5.0.24.07.zip
  • 配置环境变量
代码语言:javascript代码运行次数:0运行复制
root@DESKTOP-BB0KRFQ:/mnt/c/Users/Administrator# vim ~/.bashrc

添加

代码语言:javascript代码运行次数:0运行复制
export LD_LIBRARY_PATH=/home/oracle/instantclient_2_5:$LD_LIBRARY_PATH

使更改生效

代码语言:javascript代码运行次数:0运行复制
source ~/.bashrc

依然报错

代码语言:javascript代码运行次数:0运行复制
ERRO[0000] dbes                                          dsn="test/test12@20.10.120.190:21521/helowin" err="ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: \"libaio.so.1: cannot open shared object file: o such file or directory\". See .html#linux for help" ="连接失败" log_file="/mnt/d/projects/dbes/backend/internal/apiserver/store/database/driver/driver.go:52"

根据报错和查看oracle可知,还需要安装libaio1

代码语言:javascript代码运行次数:0运行复制
apt-get update
apt-get install -y libaio1
驱动使用代码语言:javascript代码运行次数:0运行复制
github/godror/godror

代码:

代码语言:javascript代码运行次数:0运行复制
package main

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

    _ "github/godror/godror"
)

func main() {
    // 数据库连接字符串
    dsn := "user/password@host:port/service_name"

    // 连接到数据库
    db, err := sql.Open("godror", dsn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // 测试连接
    err = db.Ping()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("成功连接到 Oracle 数据库!")

    // 执行查询
    rows, err := db.Query("SELECT column_name FROM table_name")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    // 处理查询结果
    for () {
        var columnValue string
        if err := rows.Scan(&columnValue); err != nil {
            log.Fatal(err)
        }
        fmt.Println(columnValue)
    }

    // 检查查询过程中是否发生错误
    if err := rows.Err(); err != nil {
        log.Fatal(err)
    }
}

运行go run main.go后已经可以正常使用

总结

前言中提到,Oracle 数据库在 Go 语言中的使用相对复杂,尤其是对于新手开发者而言。通过使用 godror 驱动库,我们可以更方便地与 Oracle 数据库进行交互。本文详细记录了安装和配置的步骤,确保开发者能够顺利完成环境搭建。

在安装 ODPI-C 的过程中,Windows 和 Linux(Ubuntu)的步骤有所不同。Windows 用户需要下载并解压 Oracle Instant Client,并配置相应的环境变量。而 Linux 用户则需要下载相应的包,解压后同样配置环境变量。此外,Linux 用户还需注意安装 libaio1,以避免连接时出现错误。

在驱动使用部分,我们提供了一个简单的示例代码,展示了如何通过 godror 连接到 Oracle 数据库并执行查询。通过运行 go run main.go,开发者可以验证连接是否成功,并查看查询结果。

总结而言,虽然使用 godror 操作 Oracle 数据库的过程较为繁琐,但通过本文的指导,开发者可以更轻松地完成环境准备和代码实现,从而专注于业务逻辑的开发。希望本文能为需要的 Go 开发者提供帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2025-01-1,如有侵权请联系 cloudcommunity@tencent 删除开发环境开发者连接数据库oracle

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1178493.html

相关标签:无
上传时间: 2025-07-21 22:09:28
留言与评论(共有 16 条评论)
本站网友 蝙蝠吃什么食物
30分钟前 发表
与需要的 Go 开发者分享
本站网友 银耳莲子粥的做法
7分钟前 发表
Cannot locate a 64-bit Oracle Client library
本站网友 西伯利亚训练营
2分钟前 发表
虽然使用 godror 操作 Oracle 数据库的过程较为繁琐
本站网友 晚上不要照镜子
9分钟前 发表
ent
本站网友 丁博士
11分钟前 发表
【Golang】使用godror操作Oracle数据库 前言由于Oracle通常用于大型企业和特定行业而且具有独特的特性和复杂性
本站网友 龙湖三千集
0秒前 发表
ent
本站网友 精品课程网站
3分钟前 发表
port/service_name" // 连接到数据库 db
本站网友 易视直播
24分钟前 发表
确保开发者能够顺利完成环境搭建
本站网友 北大附近租房
8分钟前 发表
DPI-1047
本站网友 谋杀记忆
18分钟前 发表
/home/oracle# unzip instantclient-basic-linux.x64-2.5.0.24.07.zip 配置环境变量代码语言:javascript代码运行次数:0运行复制root@DESKTOP-BB0KRFQ
本站网友 广州婚车
26分钟前 发表
一番折腾下来还是有些繁琐
本站网友 怎样去眼袋最有效
20分钟前 发表
开发者可以验证连接是否成功
本站网友 小脸适合什么发型
9分钟前 发表
= "user/password@host
本站网友 昂立多邦
5分钟前 发表
o such file or directory\". See .html#linux for help" ="连接失败" log_file="/mnt/d/projects/dbes/backend/internal/apiserver/store/database/driver/driver.go
本站网友 可利霉素
21分钟前 发表
golang中我们比较易用的gorm