Pertanyaan Ad Hoc dalam Pakej SQL Golang
Bertentangan dengan tanggapan awal yang disampaikan oleh dokumentasinya, pakej Golang SQL mampu memudahkan iklan hoc dan pertanyaan penerokaan.
Jenis sql.Rows mempunyai kaedah Lajur yang mendapatkan semula nama lajur hasil. Maklumat ini membolehkan penentuan bilangan lajur, walaupun untuk pertanyaan yang tidak dikenali.
Selain itu, kaedah Imbasan membenarkan pengambilan nilai lajur tanpa mengetahui jenisnya terlebih dahulu. Ia menyediakan pilihan untuk menyimpan nilai dalam bentuk mentahnya (RawBytes) atau sebagai jenis Go yang setara (antara muka{}).
Menggunakan kedua-dua kaedah Lajur dan Imbas, adalah mungkin untuk membina pendekatan yang fleksibel untuk mendapatkan semula data daripada jadual atau pertanyaan yang tidak diketahui. Sebagai contoh, kod berikut menggunakan sintaks variadic (...) untuk menyesuaikan diri secara dinamik kepada bilangan lajur.
columnNames, err := rows.Columns() if err != nil { log.Fatalln(err) } columns := make([]interface{}, len(columnNames)) columnPointers := make([]interface{}, len(columnNames)) for i := 0; i < len(columnNames); i++ { columnPointers[i] = &columns[i] } if err := rows.Scan(columnPointers...); err != nil { log.Fatalln(err) }
Kod ini menangkap semua nilai lajur yang dinyahkod untuk baris semasa dalam kepingan lajur. Kesedaran lanjutan tentang struktur jadual atau jenis lajur yang dijangkakan boleh memudahkan pengoptimuman logik selanjutnya.
Atas ialah kandungan terperinci Bolehkah Pakej SQL Golang Mengendalikan Pertanyaan Ad Hoc?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!