首頁  >  文章  >  後端開發  >  在Go語言中使用Oracle:完整指南

在Go語言中使用Oracle:完整指南

王林
王林原創
2023-06-17 20:58:353058瀏覽

在Go語言中使用Oracle:完整指南

Oracle資料庫是業界領先的關聯式資料庫之一,它的資料安全性和可靠性備受讚譽。許多企業都在使用Oracle資料庫來保存和管理大量的資料。而現在,隨著Go語言的興起和應用,越來越多的人開始探索如何在Go語言中使用Oracle。

Oracle官方提供了適用於Go語言的驅動程序,即「go-oci8」。在本文中,我們將介紹如何安裝驅動程式、初始化連線和執行查詢、刪除和插入操作。

安裝Oracle驅動程式

首先,我們需要安裝go-oci8驅動程式。此驅動程式透過CGO呼叫Oracle資料庫客戶端程式庫,因此在安裝之前需要檢查是否安裝了Oracle客戶端程式庫。

下載安裝套件:https://oracle.github.io/odpi/doc/installation.html#linux

安裝過程很簡單,只需解壓縮並執行安裝腳本。在完成安裝後,就可以安裝go-oci8驅動程式了。使用以下命令:

go get -v -u gopkg.in/goracle.v2

初始化連線

驅動程式安裝並配置好之後,我們就可以在Go語言中連接Oracle資料庫了。可以使用以下程式碼進行初始化連線:

package main

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

func main() {
    // 格式:[账号]/[密码]@[主机名]:[端口号]/[SID]
    connectionString := "scott/tiger@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))"
    db, err := sql.Open("goracle", connectionString)
    if err != nil {
        fmt.Println("Connection Failed : ", err)
        return
    }
    defer db.Close()
    fmt.Println("Connected successfully")
}

我們需要提供Oracle資料庫的連接字串。連接字串包含以下內容:使用者名稱、密碼、主機(或IP位址)、連接埠和資料庫SID。如果您不熟悉Oracle連接字串,可以參考Oracle官方文件了解更多資訊。

執行上述程式碼後,如果連線成功,輸出「Connected successfully」。

查詢操作

下面是一個查詢Oracle資料庫的範例程式碼:

package main

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

func main() {
    // Initialize connection
    connectionString := "scott/tiger@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))"
    db, err := sql.Open("goracle", connectionString)
    if err != nil {
        fmt.Println("Connection Failed : ", err)
        return
    }
    defer db.Close()

    // Execute SQL query
    rows, err := db.Query("SELECT EMPNO, ENAME, SAL FROM EMP WHERE DEPTNO = :1", 10)
    if err != nil {
        fmt.Println("Error executing SQL query: ", err)
        return
    }
    defer rows.Close()

    // Process rows
    for rows.Next() {
        var empno int
        var ename string
        var sal int
        if err := rows.Scan(&empno, &ename, &sal); err != nil {
            fmt.Println("Error scanning row: ", err)
            return
        }
        fmt.Println(empno, ename, sal)
    }
}

此程式碼查詢了僱員表中部門編號為10的所有僱員資訊。注意,查詢中使用了命名參數。如果您需要使用位置參數,請使用“?”代替“:1”。

更新作業

以下是一個更新Oracle資料庫的範例程式碼:

package main

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

func main() {
    // Initialize connection
    connectionString := "scott/tiger@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))"
    db, err := sql.Open("goracle", connectionString)
    if err != nil {
        fmt.Println("Connection Failed : ", err)
        return
    }
    defer db.Close()

    // Execute SQL update
    result, err := db.Exec("UPDATE EMP SET SAL = :1 WHERE EMPNO = :2", 10000, 7369)
    if err != nil {
        fmt.Println("Error executing SQL update: ", err)
        return
    }
    rowsAffected, err := result.RowsAffected()
    if err != nil {
        fmt.Println("Error getting affected rows: ", err)
        return
    }
    fmt.Println("Rows affected:", rowsAffected)
}

此程式碼將僱員表中僱員號碼為7369的薪水更新為10000。

插入操作

下面是一個在Oracle資料庫中插入記錄的範例程式碼:

package main

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

func main() {
    // Initialize connection
    connectionString := "scott/tiger@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))"
    db, err := sql.Open("goracle", connectionString)
    if err != nil {
        fmt.Println("Connection Failed : ", err)
        return
    }
    defer db.Close()

    // Execute SQL insert
    result, err := db.Exec("INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (:1, :2, :3, :4, :5, :6, :7, :8)", 1000, "Test", "Test", 7369, "01-JAN-00", 10000, 0, 10)
    if err != nil {
        fmt.Println("Error executing SQL insert: ", err)
        return
    }
    rowsAffected, err := result.RowsAffected()
    if err != nil {
        fmt.Println("Error getting affected rows: ", err)
        return
    }
    fmt.Println("Rows affected:", rowsAffected)
}

此程式碼插入僱員表中一筆新記錄。

總結

本文介紹如何在Go語言中使用Oracle資料庫。我們了解如何初始化連線、執行查詢、更新和插入操作。此外,我們也介紹如何安裝必要的驅動程式。如果您的應用程式需要與Oracle資料庫進行交互,以上方法將非常有用。

以上是在Go語言中使用Oracle:完整指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn