Sobes.tech
Middle

Kas ir sagatavotas vaicājums (prepared statements)?

sobes.tech AI

Atbilde no AI

Sagatavotas vaicājums ir mehānisms darbam ar datu bāzēm, kurā SQL vaicājums tiek kompilēts un optimizēts vienreiz, un pēc tam var tikt izpildīts vairākas reizes ar dažādiem parametriem.

Priekšrocības:

  • Paaugstināta veiktspēja atkārtoti izsaucot to pašu vaicājumu.
  • Drošība — aizsardzība pret SQL injekcijām, jo parametri tiek nodoti atsevišķi no vaicājuma teksta.
  • Ērtība — parametri tiek automātiski ievietoti, nav nepieciešams manuāli izsargāt vērtības.

Go valodā sagatavots vaicājums tiek izveidots ar Prepare metodes palīdzību no *sql.DB vai *sql.Tx objekta:

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)

Šādā veidā vaicājums tiek kompilēts vienreiz, un pēc tam to var izsaukt vairākas reizes ar dažādiem parametriem.