分享
  1. 首页
  2. 文章

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

承诺一时的华丽 · · 1512 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、系统环境介绍:

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

项目开源地址:https://github.com/wendal/go-oci8

四、下载Oracle 的 OCI和SDK

1、下载OCI和SDK

https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

下载下面两文件:
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

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:承诺一时的华丽

查看原文:Linux + Golang + Oracle 11g + XORM + go-oci8 的数据库驱动测试

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1512 次点击
1 回复 | 直到 2020年09月30日 18:03:18
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏