Middle — Middle+
Kādi pieejas pastāv, lai veidotu SQL SELECT vaicājumu tieši laikā ar iespēju dinamiski mainīt nosacījumus un parametrus?
sobes.tech AI
Atbilde no AI
Dinamiski formējot SQL SELECT vaicājumus Go valodā, ir vairākas pieejas:
-
Rindu savienošana — vienkāršākā, bet ne droša metode, pakļauta SQL injekcijām.
-
Parametrizētu vaicājumu izmantošana ar paketēm
database/sqlun argumentu nodošanu caur?vai$1. -
Vaicājumu būvētāji (query builders) — bibliotēkas, kas ļauj programmatiski veidot vaicājumus ar nosacījumiem, kārtojumiem utt.
Piemērs ar 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()
// rezultātu apstrāde
}
Šī pieeja ļauj dinamiskā veidā pievienot nosacījumus un parametrus, izvairoties no kļūdām un SQL injekcijām.
Tāpat var izmantot ORM vai savus wrapperus vaicājumu veidošanai.