Requête originale :
La documentation Go SQL implique que la récupération les données d'une base de données nécessitent une connaissance statique du nombre de colonnes et des types de données. Cela soulève des inquiétudes concernant les requêtes ad hoc et la gestion des structures de tables dynamiques.
Réponse :
Bien qu'il soit vrai que Rows.Scan() nécessite des paramètres fixes, le sql.Rows type fournit la méthode Columns() pour obtenir dynamiquement les noms de colonnes. De plus, la méthode Scan() prend en charge les options suivantes :
Solution :
En combinant ces fonctionnalités, vous pouvez créer un code flexible qui prend en charge les requêtes ad hoc et les structures de tables dynamiques :
<code class="go">columnNames, err := rows.Columns() if err != nil { // Handle error } columns := make([]interface{}, len(columnNames)) columnPointers := make([]interface{}, len(columnNames)) for i := range columnNames { columnPointers[i] = &columns[i] } if err := rows.Scan(columnPointers...); err != nil { // Handle error } // columns slice now contains decoded column values for the current row</code>
Si vous disposez d'informations supplémentaires sur le tableau, vous pouvez optimiser la logique selon vos besoins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!