sql
SQL kütüphanesi, Garry's Mod ile birlikte gelen güçlü veritabanı yazılımına erişmenizi sağlar. Büyük miktarda veri depolamak için tercih edilen ve en hızlı yöntemdir. Veritabanı, sunucu tarafında sv.db ve istemci tarafında cl.db olarak, her ikisi de Garry's Mod ana klasöründe bulunur. SQL, nispeten basit olmasına rağmen kendi başına bir betik dilidir ve bu kütüphaneyi kullanmadan önce hakkında bilgi edinmeniz gereken bir konudur.
sql kullanım örneği.
-- Bir tablo oluşturma
sql.Query("CREATE TABLE my_db_table( id NUMBER , name TEXT )" )
-- Tabloya bir değer ekleme
sql.Query("INSERT INTO my_db_table( id , name ) VALUES( 1 , 'First') ")
-- Tablo verilerini yazdırma
PrintTable( sql.Query("SELECT * FROM my_db_table ") )
-- Tabloyu silme
sql.Query("DROP TABLE my_db_table")
Bilinen GMod SQLite ayarları:
- Geçici dosyalar bellekte saklanır (
SQLITE_TEMP_STORE = 3) ATTACHveDETACHişlemleri yok (SQLITE_OMIT_ATTACH = 1)- Sanal Tablolar yok (
SQLITE_OMIT_VIRTUALTABLE = 1) VACUUMişlemi yok (SQLITE_OMIT_VACUUM = 1)DELETEveUPDATEifadelerindeLIMITveORDER BYmaddeleri yok (SQLITE_ENABLE_UPDATE_DELETE_LIMIT)
Metotlar
sql.Begin()
Motoru bir dizi sorgunun geleceği konusunda bilgilendirir. Sorguları çalıştırmak için sql.Commit çağrılana kadar bekler.
Bu, özellikle 100'den fazla sorgu çalıştırdığınızda kullanışlıdır.
Şununla eşdeğerdir:
sql.Query( "BEGIN;" )
sql.Commit()
Motorun, yürütülmek üzere sıraya alınmış bir dizi sorguyu çalıştırmasını söyler. Öncesinde sql.Begin çağrılmış olmalıdır.
Bu, sql.Query( "COMMIT;" ) ile eşdeğerdir.
Belirtilen isimde bir dizin (index) varsa true döndürür.
Yerel SQLite veritabanında bir sorgu gerçekleştirir, sonuç kümesi olarak bir tablo, sonuç boşsa nil ve hata durumunda false döndürür.
Bu fonksiyonla güvenli bir şekilde SQL sorguları çalıştırmak için, sorgu dizesindeki birleştirilmiş değişkenlerin SQL enjeksiyonu gibi güvenlik açıklarından kaçınmak için güvenli olduğundan emin olmak çok önemlidir. Bunun için, argümanların doğru bir şekilde kaçış karakteriyle (escape) işlenmesini sağlayan sql.SQLStr'nin kullanılması önerilir.
Mümkünse bunun yerine sql.QueryTyped kullanmak en iyisidir.
sql.Query'yi gerçekleştirir ve n'inci satırı döndürür.
Bu fonksiyon, güvenli bir şekilde
sql.Query(query)[row] döndürmeye eşdeğerdir.
Doğru tür yönetimi ve parametre bağlama ile yerel SQLite veritabanında bir sorgu gerçekleştirir, sonuç kümesi olarak bir tablo, sonuç yoksa boş bir tablo ve hata durumunda false döndürür. sql.Query'nin aksine, bu fonksiyon SQLite veri türlerini doğru bir şekilde yönetir ve SQL enjeksiyon saldırılarını önlemek için güvenli parametre bağlamaya olanak tanır.
Bu fonksiyon, noktalı virgülle ayrılmış birden fazla ifadeyi çalıştırabilen sql.Query'nin aksine, yalnızca tek bir SQL ifadesi yürütür.
Büyük INTEGER değerleri (±9,007,199,254,740,991'i aşanlar), tam değerleri korumak için string olarak döndürülür. Bunun nedeni, Lua'nın tüm sayıları, 2⁵³-1'den büyük tamsayılar için kesinliğini kaybeden double olarak temsil etmesidir. Bunları string olarak döndürmek, yuvarlama hatalarından kaynaklanan veri bozulmasını önler.
Sorguyu sql.QueryRow gibi gerçekleştirir, ancak bulunan ilk değeri döndürür.
Bir SQLite SQL Sorgusunda kullanılan kullanıcı girdisinden tehlikeli karakterleri ve sembolleri kaçış karakteriyle (escape) işler.
Mümkünse, bunun yerine sql.QueryTyped kullanılması önerilir.
Bu fonksiyonu MySQL gibi harici veritabanı motorlarıyla kullanmayın. MySQL ve SQLite, birbiriyle uyumsuz farklı kaçış dizileri kullanır! Dizeleri yetersiz fonksiyonlarla işlemek tehlikelidir ve SQL enjeksiyonu güvenlik açıklarına yol açar.
Belirtilen isimde bir tablo varsa true döndürür.
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord