Middle — Middle+
Shartlar va parametrlarni dinamik ravishda o'zgartirish imkoniyatiga ega bo'lgan SQL SELECT so'rovini real vaqtda shakllantirish uchun qanday yondashuvlar mavjud?
sobes.tech AI
AIdan javob
Go'da dinamik tarzda SQL so'rovlarini yaratish uchun bir nechta yondashuvlar mavjud:
-
Qatorlarni qo'shish — eng oddiy, lekin xavfli usul, SQL injektsiyalariga moyil.
-
Parametrli so'rovlar dan foydalanish
database/sqlpaketlari bilan va argumentlarni?yoki$1orqali o'tkazish. -
So'rovlar quruvchilari (query builders) — shartlar, tartiblar va boshqalar bilan dasturiy ravishda so'rovlar yaratishga imkon beradigan kutubxonalar.
Masterminds/squirrel kutubxonasi bilan misol:
import (
"github.com/Masterminds/squirrel"
"database/sql"
_ "github.com/lib/pq"
)
func buildQuery(age int, active bool) (string, []interface{}, error) {
qb := squirrel.Select("id", "name").From("users")
if age > 0 {
qb = qb.Where(squirrel.Gt{"age": age})
}
if active {
qb = qb.Where(squirrel.Eq{"active": true})
}
return qb.ToSql()
}
func main() {
db, _ := sql.Open("postgres", "connection_string")
query, args, _ := buildQuery(30, true)
rows, _ := db.Query(query, args...)
defer rows.Close()
// natijalarni qayta ishlash
}
Bu yondashuv shartlar va parametrlarni dinamik ravishda qo'shishga imkon beradi va xatolar hamda SQL injektsiyalaridan saqlaydi.
Shuningdek, ORM yoki o'zgaruvchi qoplamalar yordamida so'rovlar qurish mumkin.