前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【Golang】使用godror操作Oracle数据库--开发环境篇

【Golang】使用godror操作Oracle数据库--开发环境篇

作者头像
编码如写诗
发布2025-01-14 17:38:32
发布2025-01-14 17:38:32
12100
代码可运行
举报
文章被收录于专栏:编码如写诗编码如写诗
运行总次数:0
代码可运行

前言

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

目的

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

安装ODPI-C

说明文档:[2. Installing ODPI-C ](https://odpi-c.readthedocs.io/en/latest/user_guide/installation.html)

下载地址:Oracle Instant Client Downloads

windows

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

说明:

Linux(Ubuntu)

  • 下载包
  • 解压
代码语言:javascript
代码运行次数:0
复制
root@DESKTOP-BB0KRFQ:/home/oracle# ls
instantclient-basic-linux.x64-23.5.0.24.07.zip
root@DESKTOP-BB0KRFQ:/home/oracle# unzip instantclient-basic-linux.x64-23.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_23_5:$LD_LIBRARY_PATH

使更改生效

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

依然报错

代码语言:javascript
代码运行次数:0
复制
ERRO[0000] dbes                                          dsn="test/test123@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: No such file or directory\". See https://oracle.github.io/odpi/doc/installation.html#linux for help" fields.msg="连接失败" 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.com/godror/godror

代码:

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

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

    _ "github.com/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 rows.Next() {
        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-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编码如写诗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 目的
  • 安装ODPI-C
    • windows
    • Linux(Ubuntu)
  • 驱动使用
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档