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)
  • ATTACH ve DETACH işlemleri yok (SQLITE_OMIT_ATTACH = 1)
  • Sanal Tablolar yok (SQLITE_OMIT_VIRTUALTABLE = 1)
  • VACUUM işlemi yok (SQLITE_OMIT_VACUUM = 1)
  • DELETE ve UPDATE ifadelerinde LIMIT ve ORDER BY maddeleri 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.
boolean sql.IndexExists( string indexName )
Belirtilen isimde bir dizin (index) varsa true döndürür.
Bir SQLite sorgusundan kaynaklanan son hatayı döndürür.
table veya boolean veya nil sql.Query( string query )
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.
table sql.QueryRow( string query, number row = 1 )
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.
table veya boolean sql.QueryTyped( string query, ... )
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.
string sql.QueryValue( string query )
Sorguyu sql.QueryRow gibi gerçekleştirir, ancak bulunan ilk değeri döndürür.
string sql.SQLStr( string string, boolean bNoQuotes = false )
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.
boolean sql.TableExists( string tableName )
Belirtilen isimde bir tablo varsa true döndürür.

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord