sql >> Databasteknik >  >> RDS >> Mysql

Gå till SQL-drivrutin hämta gränssnitts{} kolumnvärden

Se denna https://stackoverflow.com/questions/20271123/go -lang-sql-in-parametrar svar som mitt svar bygger på. Genom att använda det kan du göra något så här:

var myMap = make(map[string]interface{})
rows, err := db.Query("SELECT * FROM myTable")
defer rows.Close()
if err != nil {
    log.Fatal(err)
}
colNames, err := rows.Columns()
if err != nil {
    log.Fatal(err)
}
cols := make([]interface{}, len(colNames))
colPtrs := make([]interface{}, len(colNames))
for i := 0; i < len(colNames); i++ {
    colPtrs[i] = &cols[i]
}
for rows.Next() {
    err = rows.Scan(colPtrs...)
    if err != nil {
        log.Fatal(err)
    }
    for i, col := range cols {
        myMap[colNames[i]] = col
    }
    // Do something with the map
    for key, val := range myMap {
        fmt.Println("Key:", key, "Value Type:", reflect.TypeOf(val))
    }
}

Genom att använda reflect-paketet kan du sedan få typ för varje kolumn efter behov, vilket visas med slingan i slutet.

Detta är generiskt och fungerar med alla tabeller, antal kolumner etc.



  1. Bättre ALTER än DROP

  2. mysql - gör en mekanism som liknar Oracles sekvenser

  3. Konvertera spara/uppdatera samtalsskenor till sql

  4. Vilken är den rekommenderade batchstorleken för SqlBulkCopy?