47.蛤蟆笔记go——go连接Oracle

在连接ORACLE数据库之前我们先来看下一个概念OCI。

oci

ORACLE调用接口(Oracle Call Interface简称OCI)提供了一组可对ORACLE数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。

Go-oci下载

放到开发路径下,文件夹go-oci8-master

将go-oci8-master\windows (绝对路径,此处使用相对路径为例)加入到PATH 环境变量。

设置环境变量PKG_CONFIG_PATH为go-oci8-master\windows(绝对路径,此处使用相对路径为例)

下载OCI

最新的版本是12.1.0.1.0

安装到:C:/instantclient_12_1

修改oci8.pc文件中如下:

prefix=C:/instantclient_12_1

exec_prefix=C:/instantclient_12_1

libdir=${exec_prefix}

includedir=${prefix}/sdk/include/

Name: OCI

Description: Oracle database engine

Version: 12.1

Libs: -L${libdir} -loci

Libs.private:

Cflags: -I${includedir}

历史版本下载:

修改oci8.go

如果报错:

# go-oci8-master

go-oci8-master\oci8.go:116: cannot convert(**C.struct_OCIServer)(unsafe.Pointer(&conn.svc)) (type**C.struct_OCIServer) to type **C.struct_OCISvcCtx

exit status 2

则需要修改\go-oci8-master\oci8.go文件

有4个地方需要修改

1、119行

2、136行

3、263行

4、383行

或者直接替换OCIServer为OCISvcCtx。

package main

import (

"database/sql"

_"go-oci8-master"

"log"

"os"

)

func main() {

// 为log,方便查看行数

log.SetFlags(log.Lshortfile| log.LstdFlags)

log.Println("OracleDriver example")

os.Setenv("NLS_LANG","")

// /密码@实例名跟sqlplus的conn命令类似

db,err:= sql.Open("oci8","tpcc2/tpcc2@toaddb")

if err!= nil {

log.Fatal(err)

}

rows,err := db.Query("select 3.14,'foo' from dual")

if err!= nil {

log.Fatal(err)

}

deferdb.Close()

forrows.Next() {

varf1 float64

varf2 string

rows.Scan(&f1,&f2)

log.Println(f1,f2) // 3.14 foo

}

rows.Close()

// 先删表,再建表

db.Exec("droptable sdata")

db.Exec("createtable sdata(name varchar2(256))")

db.Exec("insertinto sdata values('')")

db.Exec("insertinto sdata values('1234567890ABCabc!@#$%^&*()_+')")

rows,err = db.Query("select * from sdata")

if err!= nil {

log.Fatal(err)

}

forrows.Next() {

var name string

rows.Scan(&name)

log.Printf("Name= %s,len=%d",name,len(name))

}

rows.Close()

}

执行

2016/07/1011:09:51 hello.go:14: Oracle Driver example

2016/07/1011:09:51 hello.go:33: 3.14 foo

2016/07/1011:09:52 hello.go:52: Name = 中文,len=6

2016/07/1011:09:52 hello.go:52: Name = 1234567890ABCabc!@#$%^&*()_+,len=28

完毕。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

蛤蟆 Oracle,47.蛤蟆笔记go——go连接Oracle相关推荐

  1. oracle 水晶报表开发,水晶报表连接Oracle做数据报表笔记

    首先,新建一个水晶报表的文件,这个时候要给这个报表文件绑定一个oracle数据源, 选择右侧菜单的这个东西,选择"数据库专家",打开之后是这么一个界面: 选择建立新连接: 这个地方 ...

  2. sql server 2008连接oracle操作步骤详细记录,SQLServer连接Oracle详细步骤

    我们知道SQL Server和Oracle其实很多原理都类似.特别是一些常用的SQL语句都是按照标准来.所以它们也可以有一定的互操作性的.这里 我们知道SQL Server和Oracle其实很多原理都 ...

  3. java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)

    * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...

  4. 64位oracle客户端_开发小记-golang连接Oracle数据库配置

    项目需求golang连接Orale数据库,使用mattn/go-oci8包,github地址 https://github.com/mattn/go-oci8 过程 Oracle Client和SDK ...

  5. 通达oa oracle数据库,通达OA 2016系统连接ORACLE 11g数据库(图文)

    通达OA应该对Oracle是支持的,在数据源里还有ERP数据源的选项有sqlserver和Oracle的选项呢. 使用OA连接Oracle还是需要一些设置的. 1.先下载Oracle的客户端支持程序 ...

  6. python连接oracle数据库的方法_Python3.6连接Oracle数据库的方法详解

    本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Ora ...

  7. plsql连接oracle未找到oci,Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案...

    用plsql developer连接远程Oracle时会出现Could not initalize oci.dll警告,原因分析:安装完后Oracle的 oci.dll 是64位的,而32位应用程序 ...

  8. python读取oracle数据库中文乱码_PL/SQL连接Oracle数据库,中文乱码,显示问号

    PL/SQL连接oracle数据库 1.简单介绍 在不安装oracle数据库的情况下使用pl/sql连接远程oracle数据库. 2.详细步骤: a)      安装PL/SQL.依据自己的操作系统安 ...

  9. linux连接oracle的日志,linux shell脚本连接oracle查询数据插入文件和日志文件中

    #!/bin/sh sqlplus "用户名/密码@数据库"< sqlplus "用户名/密码"< sqlplus -S "用户名/密码& ...

最新文章

  1. AI教父争夺秘史:百度2.88亿天价求才,因中国身份惜败谷歌
  2. 用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列
  3. 图片压缩质量并保存指定尺寸
  4. html5鼠标下拉浮窗固定,【前端技术】vue-floating-menu可拖拽吸附的浮窗菜单
  5. 【HeadFirst设计模式——开篇】
  6. java数组的二进制查找_Java程序在长数组上实现二进制搜索
  7. 如何操作别人计算机,如何远程控制别人的电脑【图解】
  8. 搭建CentOS的本地yum源
  9. PYQT之- QObject与线程QThread的关系
  10. IT编程宝园资料分享
  11. 老路MBA商学课|第004课:边际成本|飞机起飞前的座位,只卖一块钱?
  12. 易语言服务器调试输出为假,跟我入门易语言 7 调试输出与输出调试文本
  13. 冉宝的每日一题--8月13日
  14. mysql dump 1449_关于mysqldump的ERROR 1449 问题
  15. Imagewarping变形算法研究---MLSR(Nonrigid image deformation using moving regularized least quares)
  16. 海思对接索尼ECX334 RGB OLED屏总结
  17. moviepy音视频开发:使用credits1给视频加片头片尾字幕
  18. 18、弱电工程综合布线系统常用的线材及设备图文资料
  19. 冲冠一怒为代码:论程序员与负能量
  20. Mac 下抓包工具安装使用

热门文章

  1. 前端模块化(二):模块化编程
  2. 获取要素集中字段的唯一值
  3. Qt setMargin()和setSpacing() 的含义
  4. Html5 各属性详解
  5. Qt 图形特效(Graphics Effect)介绍
  6. WINCE应用的UI实现方案
  7. 在STM32单片机上跑神经网络算法
  8. Linux Ftrace 使用
  9. Linux 下的复制命令,这几个比较靠谱
  10. hp-socket 文本跟图片同时发送_文本、截图和应用,这样「包装」一秒变美观