Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyambung ke pangkalan data jauh menggunakan Golang?

Bagaimana untuk menyambung ke pangkalan data jauh menggunakan Golang?

WBOY
WBOYasal
2024-06-01 20:31:59929semak imbas

Melalui pakej pangkalan data/sql perpustakaan standard Go, anda boleh menyambung ke pangkalan data jauh seperti MySQL, PostgreSQL atau SQLite: Buat rentetan sambungan yang mengandungi maklumat sambungan pangkalan data. Buka sambungan pangkalan data menggunakan fungsi sql.Open(). Lakukan operasi pangkalan data seperti pertanyaan SQL dan operasi sisipan. Gunakan tangguh untuk menutup sambungan pangkalan data untuk mengeluarkan sumber.

如何用 Golang 连接远程数据库?

Cara menyambung ke pangkalan data jauh dengan Golang

Golang ialah bahasa pengaturcaraan berkuasa yang boleh menyambung ke pangkalan data jauh dengan mudah. Tutorial ini akan memperkenalkan cara menggunakan pakej pangkalan data/sql perpustakaan standard Go untuk menyambung ke pangkalan data jauh seperti MySQL, PostgreSQL dan SQLite. database/sql 包连接到 MySQL、PostgreSQL 和 SQLite 等远程数据库。

必备条件

  • Golang 1.16 或更高版本
  • 远程数据库(如 MySQL、PostgreSQL 或 SQLite)

连接字符串

首先,我们需要创建一个连接字符串,该字符串包含连接到数据库所需的信息。以下是如何创建不同数据库的连接字符串:

MySQL:

"user:password@tcp(host:port)/dbname"

PostgreSQL:

"user=username password=password host=address port=port dbname=database"

SQLite:

"path/to/sqlite.db"

其中,userpasswordhostportdbname 是特定于数据库的。

连接数据库

使用 database/sql

Keperluan

  • Golang 1.16 atau lebih tinggi
  • Pangkalan data jauh (seperti MySQL, PostgreSQL atau SQLite)

Rentetan sambungan

Pertama, kita perlu buat rentetan sambungan yang mengandungi maklumat yang diperlukan untuk menyambung ke pangkalan data. Begini caranya untuk mencipta rentetan sambungan untuk pangkalan data yang berbeza: 🎜🎜🎜MySQL: 🎜🎜
import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql" // Import MySQL driver
    _ "github.com/lib/pq" // Import PostgreSQL driver
    _ "github.com/mattn/go-sqlite3" // Import SQLite driver
)

func main() {
    // Create a connection string
    connStr := "user:password@tcp(host:port)/dbname"

    // Open the database connection
    db, err := sql.Open("mysql", connStr)
    if err != nil {
        panic(err)
    }
    defer db.Close()  // Close the connection when the function returns
}
🎜🎜PostgreSQL: 🎜🎜
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql" // Import MySQL driver
)

func main() {
    // Connect to the database
    db, err := sql.Open("mysql", "root:@/test")
    if err != nil {
        panic(err)
    }
    defer db.Close() // Close the connection when the function returns

    // Create a table
    query := `CREATE TABLE IF NOT EXISTS users (
        id INT PRIMARY KEY AUTO_INCREMENT,
        username VARCHAR(255) NOT NULL,
        password VARCHAR(255) NOT NULL
    );`
    _, err = db.Exec(query)
    if err != nil {
        panic(err)
    }

    // Insert a record into the table
    query = `INSERT INTO users (username, password) VALUES (?, ?)`
    stmt, err := db.Prepare(query)
    if err != nil {
        panic(err)
    }
    _, err = stmt.Exec("admin", "password")
    if err != nil {
        panic(err)
    }

    // Retrieve the record from the table
    query = `SELECT * FROM users WHERE id = ?`
    var id int
    var username string
    var password string
    err = db.QueryRow(query, 1).Scan(&id, &username, &password)
    if err != nil {
        panic(err)
    }
    fmt.Println("ID:", id, "Username:", username, "Password:", password)
}
🎜🎜SQLite: 🎜🎜rrreee🎜🎜PostgreSQL: 🎜🎜rrreee🎜🎜SQLite: 🎜🎜rreee🎜🎜Kod laluan, , host, port dan dbname adalah khusus pangkalan data. 🎜🎜Sambung ke pangkalan data🎜🎜Gunakan pakej pangkalan data/sql untuk menyambung ke pangkalan data: 🎜rrreee🎜Kes praktikal🎜🎜Berikut ialah contoh mudah menggunakan pangkalan data MySQL:🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk menyambung ke pangkalan data jauh menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn