Kết nối Golang vào Oracle Database - QuânSysAd's Blog

27 tháng 7 2019

Kết nối Golang vào Oracle Database

Tôi sẽ giới thiệu cho các bạn cách cài ngôn ngữ Go và Oracle Instan Client từ Oracle Linux yum server và sử dụng nó cùng với goracle Driver để kết nối Go program tới Oracle Database.
Môi trường : CentOS 7

1. Cài đặt Repository

$ sudo yum install -y oracle-golang-release-el7 oracle-release-el7

2. Cài đặt Go và kiểm tra

$ sudo yum -y install git gcc golang
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/opc/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/opc/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build280983252=/tmp/go-build -gno-record-gcc-switches"
$ go version
go version go1.12 linux/amd64
Cài đặt Oracle Instant Client
sudo yum -y install oracle-instantclient18.3-basic
Thêm thư viện vào Runtime Link Path.
sudo sh -c "echo /usr/lib/oracle/18.3/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

4. Cài đặt goracle Driver.

$ go get gopkg.in/goracle.v2

5. Tạo một chương trình bằng Go để test kết nối.

Tạo một file db.go như sau. Lưu ý thay đổi connect string.
package main

import (
    "fmt"
    "database/sql"
    goracle "gopkg.in/goracle.v2"
)

func main(){

    db, err := sql.Open("goracle", goracle.ConnectionParams{Username:"username", Password:"password", SID:"hostname:port/servicename"}.StringWithPassword())
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    rows,err := db.Query("select sysdate from dual")
    if err != nil {
        fmt.Println("Error running query")
        fmt.Println(err)
        return
    }
    defer rows.Close()

    var thedate string
    for rows.Next() {

        rows.Scan(&thedate)
    }
    fmt.Printf("The date is: %s\n", thedate)
}

6. Chạy thử

$ go run db.go
The date is: 2019-03-21T17:58:49Z
Nếu ra được kết quả là ngày tháng là bạn đã thành công.

Nguồn

https://blogs.oracle.com/developers/how-to-connect-a-go-program-to-oracle-database-using-goracle

Không có nhận xét nào: