Middle — Middle+
SQL SELECT sorğusunu dinamik olaraq şərtləri və parametrləri dəyişdirmək imkanı ilə canlı şəkildə formalaşdırmaq üçün hansı yanaşmalar mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da dinamik SQL sorğularını yaratmaq üçün bir neçə yanaşma mövcuddur:
-
Sətirlərin birləşdirilməsi — ən sadə, lakin təhlükəsiz olmayan və SQL injeksiyalarına məruz qalan üsul.
-
Parametrli sorğuların istifadəsi
database/sqlpaketləri ilə və arqumentləri?və ya$1vasitəsilə ötürməklə. -
Sorğu qurucuları (query builders) — şərtlər, sıralamalar və s. ilə proqramlaşdırılmış sorğular yaratmağa imkan verən kitabxanalar.
Mastminds/squirrel kitabxanası ilə nümunə:
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()
// nəticələrin işlənməsi
}
Bu yanaşma şərtləri və parametrləri dinamik şəkildə əlavə etməyə imkan verir və səhvlər və SQL injeksiyalarının qarşısını alır.
Həmçinin ORM və ya öz sarmalayıcılarınızdan istifadə edə bilərsiniz.