Middle — Middle+
Welke benaderingen bestaan er om een SQL SELECT-query ter plekke te vormen met de mogelijkheid om voorwaarden en parameters dynamisch aan te passen?
sobes.tech AI
Antwoord van AI
Voor het dynamisch genereren van SQL SELECT-query's in Go zijn er verschillende benaderingen:
-
String concatenatie — de eenvoudigste, maar onveilige methode, gevoelig voor SQL-injecties.
-
Gebruik van geparametreerde queries met pakketten
database/sqlen het doorgeven van argumenten via?of$1. -
Query builders — bibliotheken die het mogelijk maken om queries programmatisch te vormen met voorwaarden, sorteringen, enz.
Voorbeeld met de bibliotheek Squirrel:
import (
"github.com/Masterminds/squirrel"
"database/sql"
_ "github.com/lib/pq"
)
func buildQuery(age int, active bool) (string, []interface{}, error) {
qb := squirrel.Select("id", "name").From("users")
if age > 0 {
qb = qb.Where(squirrel.Gt{"age": age})
}
if active {
qb = qb.Where(squirrel.Eq{"active": true})
}
return qb.ToSql()
}
func main() {
db, _ := sql.Open("postgres", "connection_string")
query, args, _ := buildQuery(30, true)
rows, _ := db.Query(query, args...)
defer rows.Close()
// verwerking van resultaten
}
Deze aanpak maakt het mogelijk om voorwaarden en parameters dynamisch toe te voegen, waardoor fouten en SQL-injecties worden voorkomen.
Ook kun je ORM of eigen wrappers gebruiken voor het bouwen van queries.