Golang连接Oracle 需要安装Oracle Full Client或Instant Client 驱动程序
方式一
使用go get github.com/mattn/go-oci8
在GoPath的src目录下创建oracleoci8.go,内容如下:
package main
import(
"database/sql"
"fmt"
_ "github.com/mattn/go-oci8"
"log"
"os"
)
func main(){
if len(os.Args)!=2{
log.Fatalln(os.Args[0]+" user/password@host:port/sid")
}
fmt.Println(os.Args[1])
db, err := sql.Open("oci8", os.Args[1])
if err !=nil{
log.Fatalln(err)
}
defer db.Close()
//查询用户
rows, err := db.Query("select user from dual")
if err !=nil{
log.Fatalln(err)
}
defer rows.Close()
for rows.Next(){
var data string
rows.Scan(&data)
fmt.Println(data)
}
if err = rows.Err(); err !=nil{
log.Fatalln(err)
}
//查询ZHUJI表的code字段
rows2, err := db.Query("SELECT code FROM ZHUJI")
if err !=nil{
log.Fatalln(err)
}
defer rows2.Close()
for rows2.Next(){
var data string
rows2.Scan(&data)
fmt.Println(data)
}
if err = rows2.Err(); err !=nil{
log.Fatalln(err)
}
}
运行
#直接运行
go run oracleoci8.go liang/liang@192.168.0.4:1521/orcl
#或者先编译成二进制,在运行二进制文件
go build oracleoci8.go
./oracleoci8 liang/liang@192.168.0.4:1521/orcl
方式二
使用go get github.com/godror/godror
在GoPath的src目录下创建oracledror.go,内容如下:
package main
import(
"database/sql"
"encoding/json"
"fmt"
_ "github.com/godror/godror"
)
func main(){
db, err := sql.Open("godror",`user="liang" password="liang" connectString="192.168.0.4:1521/orcl"`)
if err !=nil{
panic(err)
}
err = db.Ping()
if err !=nil{
panic(err)
}
//查询ZHUJI表中code='pt'的sql:SELECT * FROM ZHUJI where CODE = 'pt'
sqlStatement :="SELECT * FROM ZHUJI where CODE = :1"
stmt, err := db.Prepare(sqlStatement)
defer stmt.Close()
if err !=nil{
panic(err)
}
rows, err := stmt.Query("pt")//输入sql中对应参数的值
if err !=nil{
panic(err)
}
defer rows.Close()//defer关闭查询连接
//获取列相关信息
strings, _ := rows.Columns()
for i :=0; i < len(strings); i++{
fmt.Print(" ", strings[i])
}
fmt.Print("\n")
//构造切片存储json
var slice []map[string]interface{}
var m1 map[string]interface{}
m1 = make(map[string]interface{})
var CODE, OVALUE1, OVALUE2 string
for rows.Next(){
rows.Scan(&CODE,&OVALUE1,&OVALUE2)//写入查询数据集的所有列名称
fmt.Printf("code is %s, OVALUE1 is %s\n", CODE, OVALUE1)
m1["CODE"]= CODE
m1["OVALUE1"]= OVALUE1
m1["OVALUE2"]= OVALUE2
slice = append(slice, m1)//分片中追加信息
}
if err = rows.Err(); err !=nil{
// handle the error here
}
defer stmt.Close()
data, err := json.Marshal(slice)
if err !=nil{
fmt.Printf("序列化错误 err = %v\n", err)
}
//输出序列化后的结果 json字符串
fmt.Printf("序列化后 = %v\n",string(data))
}
运行
#直接运行
go run oracledror.go
#或者先编译成二进制,在运行二进制文件
go build oracledror.go
./oracledror
<audio controls="controls" style="display: none;"></audio>
相关推荐
自用的Go语音连接MySQL数据库的代码,修改一下数据库地址就可直接用
在使用Navacat工具连接Oracle数据库时,可能会遇到“ORA-12737: Instant Client Light: unsupported server character set ZHS16GBK”的错误。这个错误信息表明Navacat在尝试建立连接时,发现Oracle服务器使用的字符...
Golang Oracle数据库驱动程序TL; DR; 只需使用它import(“ database / sql” _“ gopkg.in/rana/ora.v4”)func main(){ora-import“ gopkg.in/rana/ora.v4”包ora实现了Oracle数据库驱动程序。 Golang Oracle...
go-oci8描述符合Go数据库/ sql界面的Golang Oracle数据库驱动程序安装安装Oracle完整客户端或Instant Client:https://www.oracle.com/technetwork/database/data go-oci8描述Golang符合以下条件的Oracle数据库驱动...
Go-BundleDB是一种基于Golang实现的嵌入式数据库系统,专为处理不断增长的数据集而设计。它的核心特性在于其自动分裂功能,这使得数据库能够有效地管理内存和磁盘资源,保持高效运行,尤其适合那些对数据存储有动态...
总之,Go-migrate为Golang开发者提供了一个高效且易于使用的数据库迁移工具,它支持多种数据库,允许开发者以结构化的方式管理和应用数据库变更,从而简化了复杂的应用部署流程。通过深入理解和使用Go-migrate,你...
首先,**Golang与MySQL的交互**:在Golang中,我们可以使用如`go-sql-driver/mysql`这样的驱动来连接和操作MySQL数据库。该驱动遵循标准的`database/sql`接口,使得操作数据库变得简单且直观。通过预编译语句、事务...
该框架是一款基于Golang的关系数据库自动映射设计源码,由34个文件组成,其中包含24个Go源文件、3个XML文件、2个Markdown文件、1个DTD文件、1个LICENSE文件、1个SQL文件、1个MOD文件和1个SUM文件。该框架旨在简化...
MySQL 连接是一个通用的数据库连接方式,允许开发者连接不同的数据库。 10. 综合应用 在本文中,我们综合应用了 Golang 语言、go-echarts 库、Oracle Database 等技术,实现了数据可视化的监控系统。这种综合应用...
在Golang中,连接Oracle数据库通常需要借助第三方库,`go-ora`是一个非常流行的库,它提供了方便的API来实现这一目标。本示例将详细介绍如何使用`go-ora`库连接Oracle数据库,以及涉及的相关知识点。 首先,让我们...
基于Golang和PostgreSQL数据库的家族管理系统提供了一种高效、安全的方式来存储和检索家族成员信息,同时便于扩展和维护。本文将深入探讨这个系统的核心技术栈和关键设计思路。 首先,Golang(也称为Go)是Google...
在本文中,我们将深入探讨如何使用Golang实现MySQL数据库的备份操作。首先,我们需要了解为什么要进行数据库备份,特别是在处理视图及其依赖关系时所遇到的问题。Navicat作为一款常用的MySQL可视化工具,虽然强大,...
Go-Prana是一款基于Golang语言的数据库管理与代码生成工具,它的主要功能集中在简化数据库操作和提升开发效率上。Prana提供了丰富的命令行接口,让开发者能够方便地执行SQL迁移、运行嵌入式SQL脚本以及根据数据库...
总之,Oracle Instant Client SDK是Golang连接Oracle数据库的关键组件,配合Golang的数据库驱动,可以实现高效稳定的数据库操作。在使用过程中,理解其组件、配置环境、编写数据库访问代码以及优化性能是核心要点。
Golang 提供了database/sql包用于对SQL数据库的访问, 作为操作数据库的入口对象sql.DB, 主要为我们提供了两个重要的功能: •sql.DB 通过数据库驱动为我们提供管理底层数据库连接的打开和关闭操作. •sql.DB 为我们...
底层报错 error:cannot assign requested address 原因 并发场景下 client 频繁请求...以上这篇gorm golang 并发连接数据库报错的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支
使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库...
Golang(Go语言)是一种静态类型的、编译型的、并发型、垃圾回收的、C风格的编程语言,而其与Oracle数据库的交互通常依赖于特定的驱动程序,比如`go-oracledb`或`godror`。这些驱动程序在运行时需要Oracle Instant ...