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)
По този начин заявката се компилира веднъж, а след това може да се извиква многократно с различни параметри.