Sobes.tech
Middle — Middle+

Ի՞նչ մոտեցումներ կան SQL SELECT հարցում կազմելու համար՝ հնարավորությամբ փոփոխել պայմաններն ու պարամետրերը դինամիկ կերպով:

sobes.tech AI

Պատասխան AI-ից

Go-ում SQL հարցումների դինամիկ ձևավորման համար կան մի քանի մոտեցումներ՝

  1. Տողերի կոնկատենացիա — ամենահեշտ, բայց անանվտանգ միջոց, ենթակա SQL ինժեկցիային:

  2. Պարամետրավորված հարցումներ օգտագործելով database/sql փաթեթը և փոխանցելով արգումենտները ? կամ $1 միջոցով:

  3. Հարցման կառուցապատողներ (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 կամ սեփական պատվածքներ՝ հարցումների կառուցման համար: