Golang实现访问oracle

一、需求

Go使用OCI8访问oracle

二、环境准备

系统:CentOS Linux release 7.9.2009 (Core)
Go版本:go version go1.17.2 linux/amd64

  1. 安装oracle client(sqlplus)

用于访问oracle

rpm -ivh oracle-instantclient-basic-21.3.0.0.0-1.x86_64.rpm

配置环境变量

echo 'export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib' >> /etc/profile
source /etc/profile
  1. 安装gcc/gcc-c++

用于编译

yum install gcc gcc-c++ -y 
  1. 安装pkg-config

用于管理指定OCI8的相关库

yum install pkg-config -y 

配置OCI8 PkgConfig文件

mkdir /usr/local/lib/pkconfig/
vim /usr/local/lib/pkconfig/oci8.pc

prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/oracle/21/client64/lib  #sqlplus客户端库路径
includedir=${prefix}/include/oracle/21/client64  #客户端路径

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: oci8
Description: oci8 library
Libs: -L${libdir} -lclntsh
Cflags: -I${includedir}
Version: 21

配置OCI8 PkgConfig文件环境变量

echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkconfig/' >> /etc/profile
source /etc/profile

三、go连接oracle测试


package main
import (
    "database/sql"
    "fmt"
    _ "github.com/mattn/go-oci8"
)
var db *sql.DB
func initDB() (err error) {
// dsn 用户名/密码@oracle机器IP:端口/服务名
    dsn := "monitor/oracle@192.168.20.132:1521/five"
    db, err = sql.Open("oci8", dsn)
    if err != nil {
        return err
    }
    // 尝试与数据库建立连接(校验dsn是否正确)
    err = db.Ping()
    if err != nil {
        return err
    }
    return nil
}
func main() {
    err := initDB()
    if err != nil {
        fmt.Printf("init db failed,err:%s\n", err)
        return
    }
    defer db.Close()
    var user string
    err = db.QueryRow("select user from dual").Scan(&user)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("Successful  connection. Current user is: %v\n", user)
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值