Heim  >  Artikel  >  Backend-Entwicklung  >  golang odbc verstümmelter Code

golang odbc verstümmelter Code

WBOY
WBOYOriginal
2023-05-21 22:59:08842Durchsuche

Wenn Sie Golang verwenden, um eine Verbindung zu ODBC herzustellen, treten manchmal Probleme mit verstümmelten chinesischen Zeichen auf. In diesem Artikel wird erläutert, wie Sie dieses Problem lösen können.

Zuerst müssen wir den Treiber installieren. In Golang gibt es eine ODBC-Bibliothek (odbc), die über die ODBC-API eine Verbindung zu verschiedenen Datenbanken herstellen kann. Allerdings benötigen wir einen ODBC-Treiber, um eine Verbindung zur Datenbank herzustellen. Hier nehmen wir SQL Server als Beispiel. Befolgen Sie nach dem Herunterladen des ODBC-Treibers die Anweisungen zur Installation.

Nach der Installation des ODBC-Treibers müssen wir von Golang aus eine Verbindung zur Datenbank herstellen. Hier verwenden wir die ODBC-Bibliothek eines Drittanbieters „jmoiron/sqlx“. So installieren Sie diese Bibliothek:

go get github.com/jmoiron/sqlx

Diese Bibliothek bietet eine praktische Möglichkeit, eine Verbindung zu ODBC-Datenquellen herzustellen. Leider wird der Unicode-Zeichensatz standardmäßig nicht unterstützt, was zum Problem verstümmelter chinesischer Zeichen führt.

Hier ist die Lösung:

Option 1: DSN verwenden

Die Methode zur Verwendung von DSN ist wie folgt:

import (
    "github.com/jmoiron/sqlx"
    "database/sql"
)

func main() {
    connStr := "driver={SQL Server Native Client 11.0};server=127.0.0.1;database=mydb;uid=sa;pwd=password;Trusted_Connection=yes;"
    db, err := sqlx.Connect("odbc", connStr)
    if err != nil {
        log.Fatalln(err)
    }
    db.SetMaxIdleConns(2)
    db.SetMaxOpenConns(0)
    defer db.Close()
    
    rows, err := db.Query("SELECT * FROM mytable")
    if err != nil {
        log.Fatalln(err)
    }
    defer rows.Close()
    
    var (
        id int
        name string
    )
    
    for rows.Next() {
        err := rows.Scan(&id, &name)
        if err != nil {
            log.Fatalln(err)
        }
        fmt.Println(id, name)
    }
}

Hier verwenden wir die DSN-Zeichenfolge, um eine Verbindung zur ODBC-Datenquelle herzustellen. Diese Zeichenfolge enthält den Datenquellennamen (DSN) und Details zur Verbindung zur Quelle. In diesem Beispiel verwenden wir den SQL Server Native Client 11.0-Treiber, um eine Verbindung zur lokalen mydb-Datenbank herzustellen. Beachten Sie, dass in dieser DSN-Zeichenfolge Sonderzeichen wie „;“ und „=“ verwendet werden können und daher mit Escapezeichen versehen werden müssen.

Option 2: Zeichensatz festlegen

Wenn Sie DSN nicht zur Lösung des chinesischen verstümmelten Problems verwenden möchten, können Sie den verbundenen Zeichensatz mithilfe der odbc-API manuell festlegen. Die Methode zum Festlegen des Zeichensatzes in Golang ist wie folgt:

import (
    "github.com/jmoiron/sqlx"
    "database/sql"
    "strconv"
)

func main() {
    connStr := "driver={SQL Server Native Client 11.0};server=127.0.0.1;database=mydb;uid=sa;pwd=password;Trusted_Connection=yes;"
    db, err := sqlx.Connect("odbc", connStr)
    if err != nil {
        log.Fatalln(err)
    }
    db.SetMaxIdleConns(2)
    db.SetMaxOpenConns(0)
    defer db.Close()
    
    // 设置字符集
    _, err = db.Exec("SET NAMES 'UTF8'")
    if err != nil {
        log.Fatalln(err)
    }
    
    rows, err := db.Query("SELECT * FROM mytable")
    if err != nil {
        log.Fatalln(err)
    }
    defer rows.Close()
    
    var (
        id int
        name string
    )
    
    for rows.Next() {
        err := rows.Scan(&id, &name)
        if err != nil {
            log.Fatalln(err)
        }
        fmt.Println(id, name)
    }
}

Hier führen wir eine SQL-Anweisung über die „Exec“-Methode der odbc-API aus und setzen dadurch den Zeichensatz auf „UTF8“.

Kurz gesagt, wir können die DSN- oder Odbc-API verwenden, um den Zeichensatz manuell festzulegen und das Problem der chinesischen Verstümmelung zu lösen. Unabhängig von der Methode können wir eine Verbindung zur ODBC-Datenquelle in Golang herstellen und chinesische Zeichen korrekt verarbeiten.

Das obige ist der detaillierte Inhalt vongolang odbc verstümmelter Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Golang-VariablenparameterNächster Artikel:Golang-Variablenparameter