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

Linda Hamilton
Lepaskan: 2024-11-12 10:22:01
asal
549 orang telah melayarinya

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan