Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengekstrak Nilai Lajur daripada Instance Go SQL Rows ke dalam rentetan []?

Bagaimana untuk Mengekstrak Nilai Lajur daripada Instance Go SQL Rows ke dalam rentetan []?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 10:22:01540semak imbas

How to Extract Column Values from a Go SQL Rows Instance into a []string?

Mengekstrak Nilai Lajur ke dalam []rentetan menggunakan Go SQL Rows Instance

Cabaran:

Banyak tugas pengaturcaraan memerlukan mengekstrak baris data daripada jadual pangkalan data ke dalam format berstruktur. Dalam Go, pakej pangkalan data/sql menyediakan contoh Rows untuk lelaran melalui baris jadual. Walau bagaimanapun, kaedah Imbasan Baris mengharapkan penuding untuk menyasarkan pembolehubah dengan jenis yang diketahui, yang boleh mencabar apabila bilangan dan jenis lajur tidak diketahui terlebih dahulu.

Penyelesaian:

Untuk membaca lajur daripada tika Rows ke dalam rentetan [], anda boleh menggunakan yang berikut pendekatan:

  1. Dapatkan Nama Lajur: Panggil Rows.Columns() untuk mendapatkan sepotong nama lajur.
  2. Buat Slice Antara Muka: Buat hirisan []antara muka{} yang dipanggil readCols dengan panjang yang sama dengan hirisan lajur. Keratan ini akan menyimpan alamat pembolehubah rentetan.
  3. Buat Keratan Rentetan: Cipta []hirisan rentetan kosong dipanggil writeCols dengan panjang yang sama dengan hirisan lajur. Potongan ini akan menyimpan nilai rentetan.
  4. Isi Alamat: Lelaran ke atas indeks writeCols dan tetapkan setiap indeks dalam readCols ke alamat elemen yang sepadan dalam writeCols.
  5. Imbas Baris: Lelaran pada contoh Baris menggunakan Next() dan Scan(). Hantar readCols sebagai hujah kepada Scan(), yang akan mengisi alamat rentetan dalam writeCols.
  6. Tambahkan pada Hasil: Tambahkan nilai dalam writeCols pada struktur data yang anda inginkan, seperti CSV penulis.

Contoh:

package main

import (
    "fmt"
    "io"

    "database/sql"
)

func dumpTable(rows *sql.Rows, out io.Writer) error {
    colNames, err := rows.Columns()
    if err != nil {
        return err
    }

    writer := csv.NewWriter(out)
    writer.Comma = '\t'

    readCols := make([]interface{}, len(colNames))
    writeCols := make([]string, len(colNames))
    for i, _ := range writeCols {
        readCols[i] = &writeCols[i]
    }

    for rows.Next() {
        err := rows.Scan(readCols...)
        if err != nil {
            return err
        }
        writer.Write(writeCols)
    }

    if err = rows.Err(); err != nil {
        return err
    }

    writer.Flush()
    return nil
}

Kod ini membolehkan anda membaca lajur daripada tika Rows dan menukarnya menjadi rentetan [] untuk pemprosesan selanjutnya .

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Nilai Lajur daripada Instance Go SQL Rows ke dalam rentetan []?. 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