Maison >développement back-end >Golang >Comment gérer les arguments Slice dans les requêtes SQL lib/pq ?
Erreur de conversion de paramètre : tranches non prises en charge dans la requête
Lors de l'utilisation de lib/pq pour exécuter des requêtes SQL, il est important de s'assurer que les types de paramètres sont soutenu. Dans un cas, le code suivant a rencontré une erreur :
somevars := []int{1, 2, 3, 4} rows, err = db.Query("SELECT c1,c2 FROM table"+tid+" WHERE c1 IN(,,,);", somevars)
Le message d'erreur indiquait : "sql : conversion de l'argument $1 type : type non pris en charge []int, une tranche d'int". Cette erreur souligne que lib/pq ne peut pas gérer directement les tranches comme arguments.
Solution : Utilisation de pq.Array
Pour résoudre ce problème, pq.Array peut être utilisé. Cette fonction convertit une tranche Go en un ARRAY Postgres, qui est ensuite reconnu par la requête.
Le code modifié ci-dessous démontre ceci :
somevars := []int{1, 2, 3, 4} rows, err = db.Query("SELECT c1,c2 FROM table"+tid+" WHERE c1 = any();", pq.Array(somevars))
En utilisant pq.Array, la tranche est transformé en ARRAY, permettant de l'utiliser comme argument valide dans la requête. Cela permet une exécution transparente des requêtes avec des arguments de tranche.
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!