Sobes.tech
Middle

Czym są przygotowane zapytania (prepared statements)?

sobes.tech AI

Odpowiedź od AI

Przygotowane zapytania to mechanizm w pracy z bazami danych, w którym zapytanie SQL jest kompilowane i optymalizowane raz, a następnie może być wykonywane wielokrotnie z różnymi parametrami.

Zalety:

  • Zwiększona wydajność przy wielokrotnych wywołaniach tego samego zapytania.
  • Bezpieczeństwo — ochrona przed wstrzyknięciami SQL, ponieważ parametry są przekazywane oddzielnie od tekstu zapytania.
  • Wygoda — parametry są automatycznie podstawiane, nie trzeba ręcznie uciekać wartości.

W Go przygotowane zapytanie tworzy się za pomocą metody Prepare obiektu *sql.DB lub *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)

W ten sposób zapytanie jest kompilowane raz, a potem można je wywołać wielokrotnie z różnymi parametrami.