ホームページ  >  記事  >  バックエンド開発  >  Go での Oracle の使用: 完全ガイド

Go での Oracle の使用: 完全ガイド

王林
王林オリジナル
2023-06-17 20:58:353050ブラウズ

Go 言語での Oracle の使用: 完全ガイド

Oracle データベースは業界をリードするリレーショナル データベースの 1 つであり、そのデータのセキュリティと信頼性が高く評価されています。多くの企業が 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 の公式ドキュメントで詳細を参照してください。

上記のコードを実行後、接続に成功すると「接続に成功しました」と出力されます。

クエリ操作

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)
}

このコードは、employees テーブルに新しいレコードを挿入します。

概要

この記事では、Go 言語で Oracle データベースを使用する方法を紹介します。接続の初期化、クエリ、更新、挿入操作の実行方法を学習しました。さらに、必要なドライバーをインストールする方法についても説明します。上記の方法は、アプリケーションが Oracle データベースと対話する必要がある場合に役立ちます。

以上がGo での Oracle の使用: 完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。