这几天在用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) } }
相关推荐
这个项目的名字"goracle"清晰地表明了它的核心功能,即使用Go语言(golang)来操作Oracle数据库(goracle)。通过这个库,开发者可以方便地在Go应用中执行SQL查询、事务处理以及数据操作。 在Go-goracle项目中,...
go-oci8描述符合Go数据库/ sql界面的Golang Oracle数据库驱动程序安装安装Oracle完整客户端或Instant Client:https://www.oracle.com/technetwork/database/data go-oci8描述Golang符合以下条件的Oracle数据库驱动...
在Golang中操作Oracle时,你可以使用这些SDK提供的接口来建立连接、执行SQL语句、处理结果集等。例如,Go的`github.com/godror/godror`库就利用了Oracle SDK来实现与Oracle数据库的交互。确保正确配置环境变量(如...
Oracle驱动是用于Go语言连接Oracle数据库的一个重要工具,它使得开发者能够利用Go的高效能和简洁语法来操作Oracle数据库。本文将深入探讨Oracle驱动在Go中的应用,包括安装、使用方法、常见问题以及最佳实践。 首先...
本文旨在深入探讨Pro*C的工作原理、程序结构以及如何通过Pro*C来有效地管理和操作Oracle数据库。 ##### 1. 什么是Pro*C程序? Pro*C是一种特殊的编程工具,它允许开发者在C语言程序中嵌入SQL语句或PL/SQL代码块。...
在学习笔记中,作者可能详细记录了对Oracle的了解,包括SQL语法、数据库管理、表的创建与操作、索引、事务处理以及数据库优化等方面的内容。 【描述】虽然描述部分为空,但根据提供的博文链接——...
2. "oracle11gjar":这是一个单一的JAR(Java Archive)文件,包含了所有必要的类和资源,供Java应用调用以连接和操作Oracle 11g数据库。将这个JAR文件添加到项目的类路径后,开发者就可以使用JDBC API进行数据库...
它是用于连接到Oracle数据库服务器的软件组件,提供了SQL*Plus、Net Services、Pro*C/C++、JDBC、ODBC等接口,使得开发者可以通过多种编程语言访问和操作数据库。在32位Windows环境下,Oracle Database Client 19.3...