>  기사  >  백엔드 개발  >  Go에서 Oracle 사용: 전체 가이드

Go에서 Oracle 사용: 전체 가이드

王林
王林원래의
2023-06-17 20:58:353052검색

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 성공적으로"가 출력됩니다.

쿼리 연산

다음은 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" 대신 "?"를 사용하세요.

Update 작업

다음은 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)
}

이 코드는 직원 테이블에 새 레코드를 삽입합니다.

요약

이 글에서는 Oracle 데이터베이스를 Go 언어로 사용하는 방법을 소개합니다. 연결을 초기화하고, 쿼리를 수행하고, 업데이트하고, 작업을 삽입하는 방법을 배웠습니다. 또한 필요한 드라이버를 설치하는 방법도 다룹니다. 위 방법은 애플리케이션이 Oracle 데이터베이스와 상호 작용해야 하는 경우 유용합니다.

위 내용은 Go에서 Oracle 사용: 전체 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.