数据库教程:使用Gorm操作Oracle数据库踩坑记录

gorm是目前用得最多的go语言orm库,但是目前gorm官方并不支持oracle的驱动,需要用到第三驱动,最近有个项目要往oracle写数据,记录一下踩到的坑下载依赖go get github.co

gorm是目前用得最多的go语言orm库,但是目前gorm官方并不支持oracle的驱动,需要用到第三驱动,最近有个项目要往oracle写数据,记录一下踩到的坑

下载依赖

go get github.com/cengsin/oracle

这个驱动与最新的gorm库不匹配,要将gorm降级到1.21版本,不然会出现“……github.com/cengsin/oracle@v1.0.0/oracle.go:53:59: unknown field 'withreturning' in struct literal of type callbacks.config” 错误

项目结构

包含main.go和一个model目录。

|——oracle_test  |    |——model  |        |——model.go  |    |——main.go  |    |——go.mod  

编辑go.mod将gorm降级

module oracle_test     go 1.16     require (      github.com/cengsin/oracle v1.0.0      gorm.io/gorm v1.21.16  )  

运行go mod tidy命令生效

定义model类型

假设数据库里有张商店信息的表shops,包含id和店名两个字段,编写如下model.go文件。其中结构体方法tablename指定改类型对应的数据表。

package model     type shopinfo struct {      shopid   string `gorm:"column:shopid;not null"`      shopname string `gorm:"column:shopname;not null"`  }     func (s *shopinfo) tablename() string {      return "shops"  }  

连接数据库 

连接名"database/password@127.0.0.1:1521/xe"中database是数据库名,password是密码,xe是服务名。loglevel为logger.warn会打印大多数sql语句,设为logger.error只会打印运行出错的sql语句。

package main     import (      "fmt"      "log"      "os"      "time"         "oracle_test/model"         "github.com/cengsin/oracle"      "gorm.io/gorm"      "gorm.io/gorm/logger"  )     func test() {      log.println("initial database connect……")      db, err := gorm.open(oracle.open("database/password@127.0.0.1:1521/xe"), &gorm.config{          logger: logger.new(log.new(os.stdout, "rn", log.lstdflags), logger.config{              slowthreshold: 1 * time.millisecond,              loglevel:      logger.warn, //打印级别              colorful:      true,          }),          //skipdefaulttransaction: true,      })         if err != nil {          log.fatalln(err)      }         if e := db.automigrate(&model.shopinfo{}); e != nil {          log.fatalln(e.error())      }      shopinfo := new(model.shopinfo)      db.first(shopinfo)      fmt.print(*shopinfo)  }  

测试运行

go run ./main.go  

到此这篇关于使用gorm操作oracle数据库踩坑记录的文章就介绍到这了,更多相关gorm操作oracle内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多数据库技术:使用Gorm操作Oracle数据库踩坑记录,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/1105484.html

(0)
上一篇 2022年6月14日
下一篇 2022年6月14日

精彩推荐