全部产品
Search
文档中心

Lindorm:Menggunakan API yang disediakan oleh pustaka database/sql Go untuk mengembangkan aplikasi

更新时间:Nov 10, 2025

Topik ini menjelaskan cara menggunakan API yang disediakan oleh pustaka database/sql Go untuk mengembangkan aplikasi LindormTable berbasis SQL, serta menyediakan contohnya.

Prasyarat

  • Go V1.17 atau versi lebih baru telah diinstal. Untuk informasi lebih lanjut tentang cara mengunduh dan menginstal Go, lihat dokumentasi resmi.

  • Alamat IP klien yang digunakan untuk mengakses LindormTable telah ditambahkan ke daftar putih Lindorm.

Batasan

Prosedur yang dijelaskan dalam topik ini tidak berlaku untuk LindormTable Serverless.

Prosedur

  1. Tambahkan dependensi berikut ke file go.mod di proyek Go Anda:

    require github.com/apache/calcite-avatica-go/v5 v5.0.0
    replace github.com/apache/calcite-avatica-go/v5 => github.com/aliyun/alibabacloud-lindorm-go-sql-driver/v5 v5.0.6
  2. Tambahkan dependensi driver database ke file .go. Blok kode berikut memberikan contohnya:

    import (
        avatica "github.com/apache/calcite-avatica-go/v5"
    )
  3. Inisialisasi kolam koneksi dan konfigurasikan parameter terkait dalam metode main file .go. Kode berikut memberikan contohnya:

    databaseUrl := "http://localhost:30060" 
    
    conn := avatica.NewConnector(databaseUrl).(*avatica.Connector)
    conn.Info = map[string]string{
        "user":     "sql",     
        "password": "test",   
        "database": "default", 
    }
    db := sql.OpenDB(conn)
    // Konfigurasikan parameter yang terkait dengan kolam koneksi.
    db.SetConnMaxIdleTime(8 * time.Minute)
    db.SetMaxOpenConns(20)
    db.SetMaxIdleConns(2)

    Tabel berikut menjelaskan parameter yang dapat dikonfigurasikan untuk kumpulan koneksi.

    Parameter

    Diperlukan

    Deskripsi

    databaseUrl

    Ya

    Titik akhir yang digunakan untuk menghubungkan ke SQL LindormTable. Contoh: http://ld-bp12pc23yfb38****-proxy-lindorm.lindorm.rds.aliyuncs.com:30060. Untuk informasi selengkapnya tentang cara memperoleh titik akhir, lihat Lihat titik akhir LindormTable.

    user

    Ya

    Nama pengguna yang digunakan untuk terhubung ke LindormTable.

    password

    Ya

    Kata sandi yang digunakan untuk menghubungkan ke LindormTable. Jika Anda lupa kata sandi, Anda dapat mengubah kata sandi di sistem manajemen kluster LindormTable.

    database

    Ya

    Nama database yang ingin Anda akses.

    SetConnMaxIdleTime

    Tidak

    Jangka waktu maksimum untuk koneksi idle. Nilai default: 0. Nilai default menunjukkan bahwa koneksi ke LindormTable tidak pernah habis masa berlakunya.

    SetMaxOpenConns

    Tidak

    Jumlah maksimum koneksi dalam kumpulan koneksi. Nilai default: 0. Nilai default menunjukkan bahwa jumlah koneksi dalam kumpulan koneksi tidak dibatasi.

    SetMaxIdleConns

    Tidak

    Jumlah maksimum koneksi idle dalam kumpulan koneksi. Nilai default: 2.

  4. Lakukan operasi di LindormTable, seperti membuat tabel, menulis data ke tabel, menanyakan data, dan menghapus data. Contoh berikut menunjukkan cara melakukan operasi di LindormTable:

    • Buat tabel.

      _, err := db.Exec("create table if not exists user_test(id int, name varchar,age int, primary key(id))")
      if err != nil {
          fmt.Println("create table error ", err)
          return
      }
    • Tulis data ke tabel.

      • Metode 1: Tulis langsung data ke tabel.

        _, err = db.Exec("upsert into user_test(id,name,age) values(1,'zhangsan',17)")
        if err != nil {
            fmt.Println("insert data error", err)
            return
        }
      • Metode 2: Tulis data ke tabel dengan menentukan parameter.

        stmt, err := db.Prepare("upsert into user_test(id,name,age) values(?,?,?)")
        if err != nil {
            fmt.Println("prepare error", err)
            return
        }
        _, err = stmt.Exec(1, "zhangsan", 17)
        if err != nil {
            fmt.Println("upsert error", err)
            return
        }
    • Tanyakan data.

      • Metode 1: Tanyakan langsung data.

        rows, err := db.Query("select * from user_test")
        if err != nil {
            fmt.Println("query data error", err)
            return
        }
        defer rows.Close()
        var id int
        var name string
        var age int
        for rows.Next() {
            err = rows.Scan(&id, &name, &age)
            if err != nil {
                   fmt.Println("scan data error", err)
                return
            }
            fmt.Println("id:", id, "name:", name, "age:", age)
        }
      • Metode 2: Tanyakan data dengan menentukan parameter.

        stmt, err = db.Prepare("select * from user_test where id=?")
        if err != nil {
            fmt.Println("prepare error", err)
            return
        }
        rows, err := stmt.Query(1)
        if err != nil {
            fmt.Println("query data error", err)
            return
        }
        defer rows.Close()
        var id int
        var name string
        var age int
        for rows.Next() {
            err = rows.Scan(&id, &name, &age)
            if err != nil {
                   fmt.Println("scan data error", err)
                return
            }
            fmt.Println("id:", id, "name:", name, "age:", age)
        }
    • Hapus data.

      _, err = db.Exec("delete from user_test where id=1")
      if err != nil {
          fmt.Println("delete data error", err)
          return
      }
    Catatan
    • Dalam skenario bisnis di mana pernyataan serupa dieksekusi untuk menulis atau menanyakan data, kami sarankan menggunakan objek stmt yang diinisialisasi oleh metode Prepare untuk menulis atau menanyakan data. Dengan cara ini, pernyataan yang sama dianalisis, ditulis ulang, dan dioptimalkan secara batch, sehingga meningkatkan kinerja.

    • Untuk kode sampel lengkap, kunjungi Kode Sampel dan Tulis dan Tanyakan Data dengan Menentukan Parameter.