Sobes.tech
Middle

Kas yra paruošti užklausos (prepared statements)?

sobes.tech AI

Atsakymas iš AI

Paruoštos užklausos yra mechanizmas darbui su duomenų bazėmis, kuriame SQL užklausa yra sukompiliuojama ir optimizuojama vieną kartą, o tada gali būti vykdoma daug kartų su skirtingais parametrais.

Privalumai:

  • Padidintas našumas kartotinai iškviečiant tą pačią užklausą.
  • Sauga — apsauga nuo SQL injekcijų, nes parametrai perduodami atskirai nuo užklausos teksto.
  • Patogumas — parametrai automatiškai įterpiami, nereikia rankiniu būdu juos išvengti.

Go kalboje paruošta užklausa kuriama naudojant Prepare metodą iš *sql.DB arba *sql.Tx objekto:

stmt, err := db.Prepare("SELECT name FROM users WHERE id = ?")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

var name string
err = stmt.QueryRow(1).Scan(&name)
if err != nil {
    log.Fatal(err)
}
fmt.Println(name)

Šiuo būdu užklausa yra sukompiliuojama vieną kartą, o vėliau gali būti kviečiama daug kartų su skirtingais parametrais.