sql >> Database >  >> RDS >> Mysql

Ga naar SQL-stuurprogramma voor interface{} kolomwaarden

Zie deze https://stackoverflow.com/questions/20271123/go -lang-sql-in-parameters antwoord waarop mijn antwoord is gebaseerd. Hiermee kun je zoiets als dit doen:

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))
    }
}

Met behulp van het reflect-pakket kun je vervolgens het type voor elke kolom krijgen, zoals aangetoond met de lus aan het einde.

Dit is generiek en werkt met elke tabel, aantal kolommen enz.



  1. PHP PDO controleren of een tabel met een specifieke naam bestaat in de mySQL-database

  2. Waarschuwing:mysqli_connect():(28000/1045):Toegang geweigerd voor gebruiker

  3. KRUIS/BUITEN TOEPASSEN in MySQL

  4. Java MYSQL/JDBC-query retourneert verouderde gegevens van verbinding in de cache