Sobes.tech
Middle

Čo sú pripravené vyhlásenia (prepared statements)?

sobes.tech AI

Odpoveď od AI

Pripravené dopyty sú mechanizmus na prácu s databázami, pri ktorom je SQL dopyt skompilovaný a optimalizovaný raz, a potom môže byť vykonávaný viackrát s rôznymi parametrami.

Výhody:

  • Zvýšený výkon pri opakovaných volaniach toho istého dopytu.
  • Bezpečnosť — ochrana pred SQL injekciami, pretože parametre sa odovzdávajú oddelene od textu dopytu.
  • Pohodlie — parametre sa automaticky vkladajú, nie je potrebné hodnoty manuálne escapovať.

V Go sa pripravený dopyt vytvára pomocou metódy Prepare objektu *sql.DB alebo *sql.Tx:

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)

Týmto spôsobom je dopyt skompilovaný raz, a potom ho možno volať viackrát s rôznymi parametrami.