3.Go连接Oracle

3_1.Oracle推荐驱动以及准备事项

本人的数据库相关配置是 版本11.2.0.1.0

Go版本是1.2

系统是WIN7旗舰版64位

按照下面的步骤最终连接上了oracle

①首先是先在机子上安装git(这是必须的吧 作为go开发者)

②下载最新版的OCI尽管我用的是11.2的版本,但是试了n次才返现只有最新的12.1.0.1.0 才管用

下载地址是http://www.oracle.com/technetwork/cn/database/winx64soft-089540.html

如果这个地址不好使,可以再baidu是搜Instant Client Downloads for Microsoft Windows (x64)

需要下载instantclient-basic和instantclient-sdk两个zip文件

下载后将两个包解压,然后将sdk中的文件sdk文件夹放到instantclient_12_1下,形成instantclient_12_1/sdk目录级

然后将instantclient_12_1文件夹改名为instantclient_11_2并放到了C盘的跟目录下

③下载MinGW最新版(实际上我用的不是最新的 用的是这个版本x86_64-4.9.0-posix-seh-rt_v3-rev2)

④到https://github.com/wendal/go-oci8下载pkg-config.exe和oci8.pc

注意先不要把这些源码git到计算机上,只是先下载pkg-config.exe和oci8.pc(在windows目录下)

下载后进行以下操作

将pkg-config.exe复制到mingw\bin\下

将oci8.pc复制到mingw\lib\pkg-config\下(我的pkg-config是新建的因为原来没有)

注意,oci8.pc 需要根据你下载的 oci进行修改。下面是我根据我下载的oci版本做的修改。

# Package Information for pkg-config

prefix=C:/instantclient_11_2

exec_prefix=C:/instantclient_11_2

libdir=${exec_prefix}

includedir=${prefix}/sdk/include/

Name: OCI

Description: Oracle database engine

Version: 11.2

Libs: -L${libdir} -loci

Libs.private:

Cflags: -I${includedir}

⑤修改系统环境变量,

添加

PATH=原有PATH;C:\instantclient_11_2;D:\MinGW\bin; (读者根据自己的目录变换一下)

PKG_CONFIG_PATH=D:\MinGW\lib\pkg-config(读者根据自己的目录变换一下)

⑥下载源码.

把https://github.com/wendal/go-oci8源码git到本地(这是go-oci库 也就是连接oracle的驱动)

go get github.com/wendal/go-oci8

然后执行测试一下吧

3_2.Oracle连接示例代码

示例代码如下:

packagemainimport("database/sql"

"fmt"_"github.com/wendal/go-oci8"

"log")

type Users struct {

UserIdintUname string

}

func main() {

log.Println("Oracle Driver Connecting....")//用户名/密码@实例名 如system/123456@orcl、sys/123456@orcl

db, err := sql.Open("oci8", "BOOKMAN/password@orcl")if err !=nil {

log.Fatal(err)

panic("数据库连接失败")

}else{

defer db.Close()

var users []Users= make([]Users, 0)

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

log.Fatal(err)

}else{forrows.Next() {

var u Users

rows.Scan(&u.UserId, &u.Uname)

users=append(users, u)

}

fmt.Println(users)

defer rows.Close()

}

}

}

执行过程比mysql和sqlite比起来非常缓慢,结果如下

2014/07/08 01:14:05Oracle Driver Connecting....

[{1 Mike} {2 john}]

mysql oracle sqlit_【Go语言】连接数据库SQLite、MySQL、Oracle相关推荐

  1. 【MySQL】使用C语言连接数据库

    文章目录 下载Mysql的C接口库 程序中引入Mysql头文件和库文件 **Mysql接口介绍** 创建句柄 链接数据库 设置字符编码 执行SQL语句 关闭链接 mysql.ops.cc 下载Mysq ...

  2. c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

    #include #include #include #include #include #include #include #include "mydb.h" void sqld ...

  3. mysql数据库编程(c 语言)_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

    #include #include #include #include #include #include #include #include "mydb.h" void sqld ...

  4. oracle的脚本语言是什么意思,Oracle中的sql脚本语言中的循环语句介绍

    --sql脚本语言的循环介绍: --1.goto循环点. declare x number; begin x:=0;--变量初始化: <>--设置循环点. x:=x+1; dbms_out ...

  5. 易语言外部数据库MySQL支持库Access数据库Sqlite数据应用

    语言虽然有自己的数据库, 但易数据库只是以简单的.类似表格的形式组织数据信息,是一个小型数据库管理系统.有时编程中必须使用其它数据库.易语言支持以ODBC方式和ADO方式操作外部数据库. 一.ODBC ...

  6. 连接mysql语言_杂谈各个语言连接数据库如何实现的-第一讲

    我们都知道各个语言连接数据库都有封装好的API.比如操作MySQL,php有pdo,mysqli等,java有jdbc,c#有mysql-connector-net,nodejs也有mysql的驱动. ...

  7. db2 mysql sql server_连接数据库的方法(Oracle DB2 SQL Server MySQL...)

    [java]代码库import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /* ...

  8. 【MySQL】C语言连接数据库

    在使用数据库的时候,我们是操作客户端方的,向服务器请求数据.MySQL的端口号-3306 连接mysql需要头文件:#include<mysql/mysql.h> 基础连接步骤: 1.创建 ...

  9. cyq.data mysql_CYQ.Data 轻量数据层之路 V4.3 版本发布[增加对SQLite,MySQL数据库的支持]...

    前言: 继上一版本:CYQ.Data 轻量数据层之路 V4.0 版本发布,又过去一个来月了,不过也过了一个新年了. 由于过年原因,因此框架也没多折腾什么,只是年前年后顺路把sqlite,MysqL两种 ...

  10. Oracle大佬离职,怒喷MySQL是“糟糕的数据库”……

    欢迎关注方志朋的博客,回复"666"获面试宝典 在这位工程师看来,PostgreSQL 才是开源 RDBMS 的更好选择. 数据库工程师在离职的时候会干些什么?拿张贺卡.收起纪念礼 ...

最新文章

  1. 复旦大学邱锡鹏教授团队:Transformer最新综述
  2. 腾讯分布式数据库DCCB
  3. Java数组概述和定义
  4. MVC常见的控制器,接口,数据层之间的操作
  5. win10安装ensp启动40_装系统不求人,快速制作启动U盘,傻瓜式重装WIN10
  6. 快速排序的两种实现方法(js)
  7. AcWing 868. 筛质数(欧拉筛模板)
  8. Spring boot中使用Jackson ObjectMapper注入
  9. Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分 1 2. 性状 1 3. 适用场景 主治 适应症 1 3.1. 所有场景()。 1 3.2. 语法解析 构建ast 2 3.
  10. linkedin android,如何在android中登录linkedin?
  11. 重写JS保留小数-去尾法
  12. QQ免费企业邮箱申请配置
  13. 20余年互联网沉浮史:剩者为王
  14. gulp在工作中的应用
  15. ybt1109 开关灯
  16. 【C语言】||(或) (且)
  17. 标号法(label-setting algorithm)求解带时间窗的最短路问题(ESPPRC)
  18. UE4 自定义按键事件(踩坑记录)
  19. pytorch版本RetinaFace人脸检测模型推理加速
  20. 连接nacos服务器报错,显示/nacos/v1/ns/instance after all servers([localhost:8848])

热门文章

  1. numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)
  2. pandas使用drop函数删除dataframe中指定索引列表对应位置的数据行(drop multiple rows in dataframe with integer index)
  3. pandas为dataframe所有的列名称名添加前缀(add_prefix)
  4. R安德森-达令检验( Anderson-Darling Test)
  5. 影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.
  6. 物体检测之从RCNN到Faster RCNN
  7. The Pediatric Cancer Genome Project   儿童癌症基因组计划
  8. Python基础语法学习笔记
  9. windows系统服务器数据库,windows系统的服务器肿么访问数据库
  10. server sql 分组 去重 字符串拼接_SQL | 数据分析面试必备SQL语句+语法