`

Golang连接Oracle数据库两种方式

阅读更多

Golang连接Oracle 需要安装Oracle Full Client或Instant Client 驱动程序

Linux安装Golang Oracle数据库驱动程序

MacBook安装Golang Oracle数据库驱动程序

方式一

使用go get github.com/mattn/go-oci8

在GoPath的src目录下创建oracleoci8.go,内容如下:

  1. package main
  2. import(
  3. "database/sql"
  4. "fmt"
  5. _ "github.com/mattn/go-oci8"
  6. "log"
  7. "os"
  8. )
  9. func main(){
  10. if len(os.Args)!=2{
  11. log.Fatalln(os.Args[0]+" user/password@host:port/sid")
  12. }
  13. fmt.Println(os.Args[1])
  14. db, err := sql.Open("oci8", os.Args[1])
  15. if err !=nil{
  16. log.Fatalln(err)
  17. }
  18. defer db.Close()
  19. //查询用户
  20. rows, err := db.Query("select user from dual")
  21. if err !=nil{
  22. log.Fatalln(err)
  23. }
  24. defer rows.Close()
  25. for rows.Next(){
  26. var data string
  27. rows.Scan(&data)
  28. fmt.Println(data)
  29. }
  30. if err = rows.Err(); err !=nil{
  31. log.Fatalln(err)
  32. }
  33. //查询ZHUJI表的code字段
  34. rows2, err := db.Query("SELECT code FROM ZHUJI")
  35. if err !=nil{
  36. log.Fatalln(err)
  37. }
  38. defer rows2.Close()
  39. for rows2.Next(){
  40. var data string
  41. rows2.Scan(&data)
  42. fmt.Println(data)
  43. }
  44. if err = rows2.Err(); err !=nil{
  45. log.Fatalln(err)
  46. }
  47. }

运行

  1. #直接运行
  2. go run oracleoci8.go liang/liang@192.168.0.4:1521/orcl
  3. #或者先编译成二进制,在运行二进制文件
  4. go build oracleoci8.go
  5. ./oracleoci8 liang/liang@192.168.0.4:1521/orcl

方式二

使用go get github.com/godror/godror

在GoPath的src目录下创建oracledror.go,内容如下:

  1. package main
  2. import(
  3. "database/sql"
  4. "encoding/json"
  5. "fmt"
  6. _ "github.com/godror/godror"
  7. )
  8. func main(){
  9. db, err := sql.Open("godror",`user="liang" password="liang" connectString="192.168.0.4:1521/orcl"`)
  10. if err !=nil{
  11. panic(err)
  12. }
  13. err = db.Ping()
  14. if err !=nil{
  15. panic(err)
  16. }
  17. //查询ZHUJI表中code='pt'的sql:SELECT * FROM ZHUJI where CODE = 'pt'
  18. sqlStatement :="SELECT * FROM ZHUJI where CODE = :1"
  19. stmt, err := db.Prepare(sqlStatement)
  20. defer stmt.Close()
  21. if err !=nil{
  22. panic(err)
  23. }
  24. rows, err := stmt.Query("pt")//输入sql中对应参数的值
  25. if err !=nil{
  26. panic(err)
  27. }
  28. defer rows.Close()//defer关闭查询连接
  29. //获取列相关信息
  30. strings, _ := rows.Columns()
  31. for i :=0; i < len(strings); i++{
  32. fmt.Print(" ", strings[i])
  33. }
  34. fmt.Print("\n")
  35. //构造切片存储json
  36. var slice []map[string]interface{}
  37. var m1 map[string]interface{}
  38. m1 = make(map[string]interface{})
  39. var CODE, OVALUE1, OVALUE2 string
  40. for rows.Next(){
  41. rows.Scan(&CODE,&OVALUE1,&OVALUE2)//写入查询数据集的所有列名称
  42. fmt.Printf("code is %s, OVALUE1 is %s\n", CODE, OVALUE1)
  43. m1["CODE"]= CODE
  44. m1["OVALUE1"]= OVALUE1
  45. m1["OVALUE2"]= OVALUE2
  46. slice = append(slice, m1)//分片中追加信息
  47. }
  48. if err = rows.Err(); err !=nil{
  49. // handle the error here
  50. }
  51. defer stmt.Close()
  52. data, err := json.Marshal(slice)
  53. if err !=nil{
  54. fmt.Printf("序列化错误 err = %v\n", err)
  55. }
  56. //输出序列化后的结果 json字符串
  57. fmt.Printf("序列化后 = %v\n",string(data))
  58. }

运行

  1. #直接运行
  2. go run oracledror.go
  3. #或者先编译成二进制,在运行二进制文件
  4. go build oracledror.go
  5. ./oracledror

<audio controls="controls" style="display: none;"></audio>

分享到:
评论

相关推荐

    Golang连接MySQL数据库示例代码

    自用的Go语音连接MySQL数据库的代码,修改一下数据库地址就可直接用

    oci.dll,Navacat连接Oracle数据库的时候ORA-12737

    在使用Navacat工具连接Oracle数据库时,可能会遇到“ORA-12737: Instant Client Light: unsupported server character set ZHS16GBK”的错误。这个错误信息表明Navacat在尝试建立连接时,发现Oracle服务器使用的字符...

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

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

    用于Go编程语言的Oracle数据库驱动程序。-Golang开发

    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-BundleDB是Golang的嵌入式数据库其集合随着它们的增长而自动分裂

    Go-BundleDB是一种基于Golang实现的嵌入式数据库系统,专为处理不断增长的数据集而设计。它的核心特性在于其自动分裂功能,这使得数据库能够有效地管理内存和磁盘资源,保持高效运行,尤其适合那些对数据存储有动态...

    Go-migrate-在Golang中的数据库迁移处理

    总之,Go-migrate为Golang开发者提供了一个高效且易于使用的数据库迁移工具,它支持多种数据库,允许开发者以结构化的方式管理和应用数据库变更,从而简化了复杂的应用部署流程。通过深入理解和使用Go-migrate,你...

    Golang数据可视化利器go-echarts监控Oracle Database.docx

    MySQL 连接是一个通用的数据库连接方式,允许开发者连接不同的数据库。 10. 综合应用 在本文中,我们综合应用了 Golang 语言、go-echarts 库、Oracle Database 等技术,实现了数据可视化的监控系统。这种综合应用...

    Golang 针对 MySQL 数据库表结构的差异 SQL 工具。.zip

    首先,**Golang与MySQL的交互**:在Golang中,我们可以使用如`go-sql-driver/mysql`这样的驱动来连接和操作MySQL数据库。该驱动遵循标准的`database/sql`接口,使得操作数据库变得简单且直观。通过预编译语句、事务...

    golang 使用go-ora 连接数据库 示例代码

    在Golang中,连接Oracle数据库通常需要借助第三方库,`go-ora`是一个非常流行的库,它提供了方便的API来实现这一目标。本示例将详细介绍如何使用`go-ora`库连接Oracle数据库,以及涉及的相关知识点。 首先,让我们...

    基于golang和postgresql数据库的家族管理系统源码.zip

    基于Golang和PostgreSQL数据库的家族管理系统提供了一种高效、安全的方式来存储和检索家族成员信息,同时便于扩展和维护。本文将深入探讨这个系统的核心技术栈和关键设计思路。 首先,Golang(也称为Go)是Google...

    Go-Prana是一个Golang数据库管理和代码生成

    Go-Prana是一款基于Golang语言的数据库管理与代码生成工具,它的主要功能集中在简化数据库操作和提升开发效率上。Prana提供了丰富的命令行接口,让开发者能够方便地执行SQL迁移、运行嵌入式SQL脚本以及根据数据库...

    instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip

    总之,Oracle Instant Client SDK是Golang连接Oracle数据库的关键组件,配合Golang的数据库驱动,可以实现高效稳定的数据库操作。在使用过程中,理解其组件、配置环境、编写数据库访问代码以及优化性能是核心要点。

    在golang中操作mysql数据库的实现代码

    Golang 提供了database/sql包用于对SQL数据库的访问, 作为操作数据库的入口对象sql.DB, 主要为我们提供了两个重要的功能: •sql.DB 通过数据库驱动为我们提供管理底层数据库连接的打开和关闭操作. •sql.DB 为我们...

    gorm golang 并发连接数据库报错的解决方法

    底层报错 error:cannot assign requested address 原因 并发场景下 client 频繁请求...以上这篇gorm golang 并发连接数据库报错的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支

    golang实现mysql数据库备份的操作方法

    在本文中,我们将深入探讨如何使用Golang实现MySQL数据库的备份操作。首先,我们需要了解为什么要进行数据库备份,特别是在处理视图及其依赖关系时所遇到的问题。Navicat作为一款常用的MySQL可视化工具,虽然强大,...

    使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计

    使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库...

    instantclient-basic-linux.x64-19.6.0.0.0dbru.zip

    Golang(Go语言)是一种静态类型的、编译型的、并发型、垃圾回收的、C风格的编程语言,而其与Oracle数据库的交互通常依赖于特定的驱动程序,比如`go-oracledb`或`godror`。这些驱动程序在运行时需要Oracle Instant ...

    golang model代码自动生成

    在Golang中,模型(Model)通常指的是与数据库交互的对象,它们封装了数据操作的逻辑,使得业务代码能更清晰地处理数据。本项目提供的"Model代码自动生成"工具能够帮助开发者快速创建针对特定数据库表的Go语言模型...

Global site tag (gtag.js) - Google Analytics