`
zhanghan
  • 浏览: 192013 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

go操作oracle详细

 
阅读更多

这几天在用java写操作Oracel的程序,由于种种原因,Oracel未提供官方Go驱动。

在github上搜索了N多驱动,oci8,ora,等等,太多了,已经记不清下了多少个包了。

最终发觉能用的是jzaikovs\ora。

下面是遇到的问题及解决办法:

     1。oracle库中Number(19)这种长度的数据,读取时会科学计数法,而且精度丢失3位,

          可以在写SQL时,使用to_char转换成字符,在go中,根据需要再作转换(可以是uint64)。

     2。日期型问题,

          同上,在SQL中转换to_char(field,'yyyy-MM-dd HH:mm:ss')

     3。配置

          在oracle官网下载12.1的base_client以及sdk包,都解压,并把sdk放在baseclient目录中。

          在liteide中加入如下配置(环境变量)

          

# native compiler windows amd64

GOROOT=c:\go
#GOBIN=
GOARCH=amd64
GOOS=windows
CGO_ENABLED=1
GOOPATH=c:\projects\testgo
CGO_CFLAGS=-IC:/projects/instantclient_12_1/sdk/include
CGO_LDFLAGS=C:/projects/instantclient_12_1/oci.dll

 具体路径根据自己情况修改。

        4。程序示例代码:

   

package main

import (
	"database/sql"
	_ "github.com/jzaikovs/ora"
	"log"
	"os"
)

func main() {
	os.Setenv("NLS_LANG", "AMERICAN_AMERICA.AL32UTF8") //解决中文乱码

	db, err := sql.Open("ora", "用户名/密码@//ip地址:1521/sid")
	if err != nil {
		panic(err)
	}
	defer db.Close()

	rows, err := db.Query("select to_char(id) as s_id,EntName from XXX")
	if err != nil {
		panic(err)
	}
	defer rows.Close()
	var id string
	var name string
	for i := 0; i < 100 && rows.Next(); i++ {
		rows.Scan(&id, &name)
		log.Printf("%s %s \n", id, name)
	}
}

 

 

分享到:
评论

相关推荐

    开源项目-go-goracle-goracle.zip

    这个项目的名字"goracle"清晰地表明了它的核心功能,即使用Go语言(golang)来操作Oracle数据库(goracle)。通过这个库,开发者可以方便地在Go应用中执行SQL查询、事务处理以及数据操作。 在Go-goracle项目中,...

    使用数据库/ SQL进行Go的Oracle驱动程序-Golang开发

    go-oci8描述符合Go数据库/ sql界面的Golang Oracle数据库驱动程序安装安装Oracle完整客户端或Instant Client:https://www.oracle.com/technetwork/database/data go-oci8描述Golang符合以下条件的Oracle数据库驱动...

    oracle 64位客户端和sdk下载

    在Golang中操作Oracle时,你可以使用这些SDK提供的接口来建立连接、执行SQL语句、处理结果集等。例如,Go的`github.com/godror/godror`库就利用了Oracle SDK来实现与Oracle数据库的交互。确保正确配置环境变量(如...

    oracle-Oracle driver for Go using database.zip

    Oracle驱动是用于Go语言连接Oracle数据库的一个重要工具,它使得开发者能够利用Go的高效能和简洁语法来操作Oracle数据库。本文将深入探讨Oracle驱动在Go中的应用,包括安装、使用方法、常见问题以及最佳实践。 首先...

    oracle中proc的学习

    本文旨在深入探讨Pro*C的工作原理、程序结构以及如何通过Pro*C来有效地管理和操作Oracle数据库。 ##### 1. 什么是Pro*C程序? Pro*C是一种特殊的编程工具,它允许开发者在C语言程序中嵌入SQL语句或PL/SQL代码块。...

    学习笔记 testOracle

    在学习笔记中,作者可能详细记录了对Oracle的了解,包括SQL语法、数据库管理、表的创建与操作、索引、事务处理以及数据库优化等方面的内容。 【描述】虽然描述部分为空,但根据提供的博文链接——...

    oracle11gjar.zip

    2. "oracle11gjar":这是一个单一的JAR(Java Archive)文件,包含了所有必要的类和资源,供Java应用调用以连接和操作Oracle 11g数据库。将这个JAR文件添加到项目的类路径后,开发者就可以使用JDBC API进行数据库...

    oracle_database_clieent_19.3_windows-32 位 19C版

    它是用于连接到Oracle数据库服务器的软件组件,提供了SQL*Plus、Net Services、Pro*C/C++、JDBC、ODBC等接口,使得开发者可以通过多种编程语言访问和操作数据库。在32位Windows环境下,Oracle Database Client 19.3...

Global site tag (gtag.js) - Google Analytics