Maison >développement back-end >Golang >Comment gérer les arguments Slice dans les requêtes SQL lib/pq ?

Comment gérer les arguments Slice dans les requêtes SQL lib/pq ?

DDD
DDDoriginal
2024-12-19 12:06:10406parcourir

How to Handle Slice Arguments in lib/pq SQL Queries?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn