xorm oracle,Linux + Golang + Oracle 11g + XORM + go-oci8 的数据库驱动测试

一、系统环境介绍:

Linux archlinux 4.20.11-arch1-1-ARCH

Oracle 11g 64bit

OCI -> instantclient-basic-linux.x64-11.2.0.4.0.zip

OCI SDK -> instantclient-sdk-linux.x64-11.2.0.4.0.zip

go version go1.11 linux/amd64

二、安装pkg-config

# pacman -S pkg-config

三、安装go-oci8

四、下载Oracle 的 OCI和SDK

1、下载OCI和SDK

下载下面两文件:

instantclient-basic-linux.x64-11.2.0.4.0.zip

instantclient-sdk-linux.x64-11.2.0.4.0.zip

将上面的两个压缩文件解压到/usr/instantclient_11_2中,/usr/instantclient_11_2文件夹中内容如下:

adrci genezi libnnz11.so libociei.so ojdbc5.jar sdk xstreams.jar

BASIC_README libclntsh.so.11.1 libocci.so.11.1 libocijdbc11.so ojdbc6.jar uidrvci

设置环境变量LD_LIBRARY_PATH:

LD_LIBRARY_PATH=:/usr/instantclient_11_2

五、编辑oci8.pc,配置环境变量PKG_CONFIG_PATH

创建oci8.pc文件,放在项目地址如/home/go/src/test/oracle/oci8.pc, 编辑oci8.pc内容如下,确保oracle库文件及头文件地址正确:

prefix=/usr

includedir=${prefix}/instantclient_11_2/sdk/include

libdir=${prefix}/instantclient_11_2

Name: oci8

Description: Oracle Instant Client

Version: 11.2

Cflags: -I${includedir}

Libs: -L${libdir} -lclntsh

设置环境变量

PKG_CONFIG_PATH=/home/go/src/test/oracle

六、数据操作测试

测试文件main_test.go,测试前注意先添加userinfo表及数据

package main_test

import (

"database/sql"

"testing"

"github.com/go-xorm/xorm"

_ "github.com/mattn/go-oci8"

)

var driverName = "oci8" //Oracle 驱动

var dataSourceName = "ggs/123456@127.0.0.1:1521/ORCL" //数据库账号:ggs,密码:123456,实例服务:ORCL

var engine *xorm.Engine

func TestXormOracle(t *testing.T) {

var err error

engine, err = xorm.NewEngine(driverName, dataSourceName)

if err != nil {

t.Error(err)

}

tabs, err := engine.DBMetas()

if err != nil {

t.Error(err)

}

println(len(tabs))

}

func TestMattnOracle(t *testing.T) {

var db *sql.DB

var err error

if db, err = sql.Open(driverName, dataSourceName); err != nil {

t.Error(err)

return

}

var rows *sql.Rows

if rows, err = db.Query("select * from userinfo"); err != nil {

t.Error(err)

return

}

defer rows.Close()

for rows.Next() {

var id int

var name string

rows.Scan(&id, &name)

println(id, name) // 3.14 foo

}

}

1、TestXormOracle测试

=== RUN TestXormOracle

1

--- PASS: TestXormOracle (1.29s)

PASS

Process finished with exit code 0

2、TestMattnOracle测试

=== RUN TestMattnOracle

1 人员1

2 人员2

3 人员3

--- PASS: TestMattnOracle (0.39s)

PASS

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值