Middle — Middle+
Aké prístupy existujú na tvorbu SQL SELECT dotazu na mieste s možnosťou dynamickej zmeny podmienok a parametrov?
sobes.tech AI
Odpoveď od AI
Pre dynamické tvorenie SQL dotazov SELECT v Go existuje niekoľko prístupov:
-
Konkatenácia reťazcov — najjednoduchší, ale nebezpečný spôsob, náchylný na SQL injection.
-
Použitie parametrizovaných dotazov s balíčkami
database/sqla odovzdávaním argumentov cez?alebo$1. -
Query buildery — knižnice, ktoré umožňujú programovo tvoriť dotazy s podmienkami, zoradeniami a pod.
Príklad s knižnicou 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()
// spracovanie výsledkov
}
Tento prístup umožňuje dynamicky pridávať podmienky a parametre, čím sa vyhýbate chybám a SQL injection.
Tiež môžete použiť ORM alebo vlastné obalové knižnice na tvorbu dotazov.