Middle — Middle+
Кадом роҳҳо барои шаклгирии дархости SQL SELECT дар вақти воқеӣ бо имконияти тағир додани шароитҳо ва параметрҳо мавҷуданд?
sobes.tech AI
Ҷавоб аз AI
Барои шаклгирии динамикии дархости SQL-роҳбарӣ дар Go чанд роҳ вуҷуд дорад:
-
Иҷрои пайвастшавии сатрҳо — роҳи соддатарин, аммо бехатар нест, ки ба SQL-инжексияҳо дучор мешавад.
-
Истифодаи дархостҳои параметрӣ бо бастаи
database/sqlва гузаронидани аргументҳо тавассути?ё$1. -
Сохтандагони дархост (query builders) — китобхонаҳое, ки имкон медиҳанд, ки дархостҳоро ба таври барномавӣ бо шароитҳо, тартибҳо ва ғайра ташкил кунанд.
Масалан бо китобхонаи 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()
// коркарди натиҷаҳо
}
Ин роҳ имкон медиҳад, ки шароитҳо ва параметрҳоро ба таври динамикӣ илова кунед, хатогиҳоро ва SQL-инжексияҳоро пешгирӣ мекунад.
Шумо инчунин метавонед ORM ё wrappers-и худро барои сохтани дархостҳо истифода баред.