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

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

完毕。

总结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1450. 在既定时间做作业的学生人数

1. 题目 给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。 已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。 请返回在查…

linux系统限制内存使用率,linux中限制CPU和内存占用率方法

在linux中CPU与内存占用率限制的方法有几种我这里整理常用的两种,希望文章对各位同学会有所帮助哦。查看cpu占用在命令行中输入 “top”即可启动 toptop 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。使用top查看系统负荷top命令可以…

实现Table多类不同数据类型的排序(顺反)

JS如下: var TableUtil new Object(); TableUtil.Convert function(sValue,sDataType){ switch(sDataType) { case "int": return parseInt(sValue); case "float": return parseFloat(sValue); …

LeetCode 1451. 重新排列句子中的单词(桶排序)

1. 题目 「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text : 句子的首字母大写text 中的每个单词都用单个空格分隔。 请你重新排列 text 中的单词,使所有单词按其长度的升序排列。 如果两个单词的长度相同,则保留其在原句子中…

Linux系统服务器停服,Linux系统服务启动和停止

systemd 是在Linux上运行服务的新方式。 systemd 有一个被替代的 sysvinit 。 systemd为Linux带来更快的启动时间,现在是管理Linux服务的标准方式。虽然稳定, systemd 仍在不断发展。systemd 作为init系统,用于管理Linux内核引导后需要更改状…

如何计算MP3总时长的问题(三)--对于变比特率MP3求总时长

3、变比特率MP3总时长求解 之前我们所讨论的都是对于一个固定比特率(CBR)的MP3进行求总时长,由于固定比特率的特殊性,很容易第一帧的帧头就能知道整个MP3的信息,但是对于变比特率(VBR)的MP3&…

LeetCode 1452. 收藏清单(std::includes判断子集)

1. 题目 给你一个数组 favoriteCompanies ,其中 favoriteCompanies[i] 是第 i 名用户收藏的公司清单(下标从 0 开始)。 请找出不是其他任何人收藏的公司清单的子集的收藏清单,并返回该清单下标。下标需要按升序排列。 示例 1&a…

2011年值得注意的5个设计趋势

在过去的12个月里,我们已经看到Web设计领域发生了许多变化。 包括智能手机和平板电脑(如iPad)这些移动设备的日渐普及已经改变了用户对内容的访问和交互方式。还有,像HTML5、web字体和CSS这些新标准的正式通过意味着越来越多的用户可以使用网络上最新最强…

linux内核线程绑定到单个核,linux 将进程或者线程绑定到指定的cpu上

基本概念cpu亲和性(affinity)CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性;再简单的点的描述就将指定的进程或线程绑定到相应的cpu上;在多核运行的机器上,每个CPU本…

LeetCode 1453. 圆形靶内的最大飞镖数量(几何题)

1. 题目 墙壁上挂着一个圆形的飞镖靶。现在请你蒙着眼睛向靶上投掷飞镖。 投掷到墙上的飞镖用二维平面上的点坐标数组表示。飞镖靶的半径为 r 。 请返回能够落在 任意 半径为 r 的圆形靶内或靶上的最大飞镖数。 示例 1: 输入:points [[-2,0],[2,0…

熟悉linux运行环境,实验一 熟悉Ubuntu环境

实验一熟悉Ubuntu环境【实验目的】1.了解Ubuntu系统基本操作方法,学会独立使用该系统。2.熟悉Ubuntu下如何编辑、编译和运行一个C语言程序。3.学会利用gcc、gdb编译、调试C程序。【预习内容】1.预习Ubuntu下各种应用程…

Pandas入门1(DataFrame+Series读写/Index+Select+Assign)

文章目录1. Creating, Reading and Writing1.1 DataFrame 数据框架1.2 Series 序列1.3 Reading 读取数据2. Indexing, Selecting, Assigning2.1 类python方式的访问2.2 Pandas特有的访问方式2.2.1 iloc 基于index访问2.2.2 loc 基于label标签访问2.3 set_index() 设置索引列2.4…

关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)—的读后感...

关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)— 评论读后感:里面的内容很经典,很实用读后感:给初学者是好,但是是比较旧的了!VS2003 C/S的读后感&#…

linux git还原文件,Gitlab备份到windows、在Linux恢复

一 备份gitlab为完整压缩包# 在目录/var/opt/gitlab/backups/ 创建备份文件gitlab-rake gitlab:backup:create/var/opt/gitlab/backups/1559614181_2019_06_04_10.7.7_gitlab_backup.tar查看备份文件夹容量df -h /var/opt/gitlab/backups二 恢复gitlab复制gitlab_backup.tar到对…

LeetCode 372. 超级次方(快速幂)

1. 题目 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。 示例 1: 输入: a 2, b [3] 输出: 8示例 2: 输入: a 2, b [1,0] 输出: 1024来源:力扣(LeetCode) 链接&…

c#让电脑锁定、注销、关机

代码 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingMicrosoft.Win32;usingSystem.Runtime.InteropServices;usingSystem.IO;usingSystem…

linux错误自动报告工具,linux – 关闭abrt的电子邮件通知(自动错误报告工具)

我正在配置CentOS 6.2并且已经看到了一些“[abrt]完整崩溃报告”电子邮件.我知道abrt对于创建崩溃转储非常有用,所以我不想禁用该服务,我只是想停止获取崩溃报告电子邮件.我可能不得不在/etc/abrt/abrt.conf中添加一些配置文件.我似乎无法在搜索中找到任何内容.任何的想法&…

Pandas入门2(DataFunctions+Maps+groupby+sort_values)

文章目录3. Summary Functions and Maps3.1 Summary Functions 数据总结函数3.1.1 describe()3.1.2 mean(),median(),idxmax(),unique(),value_counts()3.2 Maps 映射3.2.1 map()3.2.2 apply()3.2.3 内置转换方法4. Grouping and …

Adobe和苹果相互推诿 不支持Flash谁之过?

针对苹果CEO史蒂夫乔布斯 (Steve Jobs)的指责,Adobe CTO凯文林奇(Kevin Lynch)日前给予回应,称苹果iPad不支持Flash完全是苹果的错。上周三,苹果发布了业内期待已久的平板电脑iPad,但由于不支持 Flash而遭到了用户抱怨。对此&…

linux视频在windows播放器,适用于Windows和Linux的免费多媒体播放器SMPlayer 18.6.0发布 - 爱绿豆...

SMPlayer是一个很好的 MPlayer 电影播放程序前端,可以支持大部分的视频和音频文件。它支持音频轨道切换,允许调节亮度、对比度、色调、饱和度、伽玛值,按照倍速、4倍速等多种速度回放,还可以进行音频和字幕延迟调整以同步音频和字…