Sobes.tech
Middle

Какво са подготвените заявки (prepared statements)?

sobes.tech AI

Отговор от AI

Подготвените заявки са механизъм за работа с бази данни, при който SQL заявката се компилира и оптимизира веднъж, а след това може да се изпълнява многократно с различни параметри.

Предимства:

  • Повишена производителност при повторни извиквания на една и съща заявка.
  • Сигурност — защита от SQL инжекции, тъй като параметрите се предават отделно от текста на заявката.
  • Удобство — параметрите се поставят автоматично, без да е необходимо ръчно да се екранират стойностите.

В Go, подготвената заявка се създава чрез метода Prepare на обекта *sql.DB или *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)

По този начин заявката се компилира веднъж, а след това може да се извиква многократно с различни параметри.