Middle — Middle+
Millised lähenemised on olemas SQL SELECT päringu koostamiseks reaalajas, võimalusega dünaamiliselt muuta tingimusi ja parameetreid?
sobes.tech AI
Vastus AI-lt
Dünaamilise SQL SELECT-päringute koostamise jaoks Go keeles on mitu lähenemisviisi:
-
Stringide ühendamine — kõige lihtsam, kuid ebaturvaline meetod, mis on vastuvõtlik SQL-injektsioonidele.
-
Parametriseeritud päringute kasutamine koos
database/sqlpaketiga ning argumentide edastamine läbi?või$1. -
Päringute ehitajad (query builders) — teegid, mis võimaldavad programmipõhiselt koostada päringuid tingimuste, sorteerimiste jms abil.
Näide kasutades 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()
// tulemuste töötlemine
}
See lähenemine võimaldab dünaamiliselt lisada tingimusi ja parameetreid, vältides vigu ja SQL-injektsioone.
Samuti saab kasutada ORM-i või oma kestasid päringute koostamiseks.